Selenium 封装

Selenium 封装

WebDriver对页面的操作,需要找到一个WebElement,然后再对其进行操作,比较繁琐:

[java] view plaincopy
  1. WebElement element =driver.findElement(By.name("q"));
  2. element.sendKeys("Cheese!");

我们可以考虑对这些基本的操作进行一个封装,简化操作。比如,封装代码:

[java] view plaincopy
  1. protected void sendKeys(By by, String value){
  2. driver.findElement(by).sendKeys(value);
  3. }

那么,在测试用例可以这样调用:

sendKeys(By.name("q"),”Cheese!”);

类似的封装还有:

[java] view plaincopy
  1. import java.util.List;
  2. import java.util.NoSuchElementException;
  3. import java.util.concurrent.TimeUnit;
  4. import org.openqa.selenium.By;
  5. import org.openqa.selenium.WebElement;
  6. import org.openqa.selenium.remote.RemoteWebDriver;
  7. import org.openqa.selenium.support.ui.WebDriverWait;
  8. public class DriverAction {
  9. protected RemoteWebDriver driver;
  10. protected WebDriverWait driverWait;
  11. private int WAIT_ELEMENT_TO_LOAD=10;
  12. protected boolean isWebElementExist(By selector) {
  13. try {
  14. driver.findElement(selector);
  15. return true;
  16. } catch(NoSuchElementException e) {
  17. return false;
  18. }
  19. }
  20. protected String getWebText(By by) {
  21. try {
  22. return driver.findElement(by).getText();
  23. } catch (NoSuchElementException e) {
  24. return "Text not existed!";
  25. }
  26. }
  27. protected void clickElementContainingText(By by, String text){
  28. List<WebElement>elementList = driver.findElements(by);
  29. for(WebElement e:elementList){
  30. if(e.getText().contains(text)){
  31. e.click();
  32. break;
  33. }
  34. }
  35. }
  36. protected String getLinkUrlContainingText(By by, String text){
  37. List<WebElement>subscribeButton = driver.findElements(by);
  38. String url = null;
  39. for(WebElement e:subscribeButton){
  40. if(e.getText().contains(text)){
  41. url =e.getAttribute("href");
  42. break;
  43. }
  44. }
  45. return url;
  46. }
  47. protected void click(By by){
  48. driver.findElement(by).click();
  49. driver.manage().timeouts().implicitlyWait(WAIT_ELEMENT_TO_LOAD,TimeUnit.SECONDS);
  50. }
  51. protected String getLinkUrl(By by){
  52. return driver.findElement(by).getAttribute("href");
  53. }
  54. protected void sendKeys(By by, String value){
  55. driver.findElement(by).sendKeys(value);
  56. }
  57. }

转载于:https://www.cnblogs.com/111testing/p/6986918.html

Selenium 方法封装 一相关推荐

  1. 【EventBus】事件通信框架 ( 实现几个关键的封装类 | 消息中心 | 订阅注解 | 订阅方法封装 | 订阅对象-方法封装 | 线程模式 )

    文章目录 一.消息中心 二.订阅方法时的注解 三.订阅方法封装 四.订阅对象-方法封装 五.线程模式 一.消息中心 此处暂时只实现一个单例类 , 后续 注册订阅者 , 处理事件传递 , 取消注册订阅者 ...

  2. javascript中最最最常用的方法封装

    javascript 常用方法的封装,小编持续升级中... 方法封装(js原生): 一.Object 类型 MHQ.ajaxUtils 定义一个ajax工具类 ajax 定义一个ajax工具函数 ge ...

  3. python3读取excel方法封装_Python读取Excel的方法封装

    今天需要从一个Excel文档(.xls)中导数据到数据库的某表,开始是手工一行行输的.后来想不能一直这样,就用Python写了下面的代码,可以很方便应对这种场景.比如利用我封装的这些方法可以很方便地生 ...

  4. 利用ES6-Promise()方法封装原始jsonp实现跨域请求公用方法(告别使用JQuery封装好的jsonp)

    在项目中,经常需要用到jsonp实现跨域请求,假如使用JQuery封装好的jsonp方法,是很容易实现的,缺点:需要引入JQuery库. $.ajax({url : './package.json', ...

  5. python 接口测试 url_Python 接口测试之接口请求方法封装

    引言 前面讲过三篇文章: 既然我们接口测试用例写好了,测试数据也拿到了,那么就是模拟调用接口的方法了,方法有get,post,put,delete,具体是选择哪种,我们需要根据不同接口规定好请求方法来 ...

  6. 数据本地存储方法封装(笔记)localStorage、sessionStorage

    数据本地存储方法封装(笔记)localStorage.sessionStorage 方法: import storage from 'good-storage'const SELLER_KEY = ' ...

  7. jq封装接口ajax,jquery ajax方法封装及api文件设计的代码示例

    本篇文章给大家带来的内容是关于jquery ajax方法封装及api文件设计的代码示例,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 封装 jquery ajax 文件/** * 封 ...

  8. python滑动手机屏幕_appium+python自动化24-滑动方法封装(swipe)

    swipe介绍 1.查看源码语法,起点和终点四个坐标参数,duration是滑动屏幕持续的时间,时间越短速度越快.默认为None可不填,一般设置500-1000毫秒比较合适. swipe(self, ...

  9. setStyle 方法封装

    setStyle 方法封装 function setStyle(el, obj) { ​ // 将样式放入到数组中. ​ var arr = ["height", "wi ...

  10. 爬虫笔记——东方财富科创板数据爬取(selenium方法)

    爬虫笔记--东方财富科创板数据爬取(selenium方法) 网站观察 网站分析 公司详情页面 具体代码 selenium方式爬取 优点:无需观察网站去查找数据来源 缺点:速度较requests方法更慢 ...

最新文章

  1. iPhone12 safeArea顶部区域尺寸变化
  2. C语言经典例19-完数
  3. Qt Creator添3D组件模型
  4. apple默认备份位置_如何将Apple Maps默认设置为步行路线
  5. C/C++输入输出流
  6. java xml约束_[Java教程]XML约束
  7. 格式小结 css 0926
  8. html+javascript实现数字微调,点击一下增加1或减去1
  9. EnterpriseDb公司的Postgres Enterprise Manager 安装图解
  10. Ubuntu16.04 设置自启动脚本,系统重启自动执行自定义脚本任务
  11. php js轮播图片代码,html中用JS实现图片轮播的实例代码
  12. 偏最小二乘(Partial Least Squares,PLS)原理及模型建立
  13. python修改文件夹下文件夹的名字
  14. 华为计算机网络基础知识,华为HCNE专题一:网络基础知识
  15. 打开idea注释doc的rendered view模式
  16. 鸿蒙系统投影仪,投影仪有系统和无系统的区别 当贝OS好在哪里?体验完明白了!...
  17. 建议收藏 | IC专业术语盘点
  18. 通过js动态创建标签,并设置属性
  19. PhotoshopCS6
  20. 网络超时设置connectionTimeout和SoTimeout的区别

热门文章

  1. html单元格选中状态,UITableViewCell 设置单元格选中后只显示一个打勾的状态
  2. Python数据可视化库——Matplotlib
  3. Softmax分类函数
  4. 《Android游戏开发详解》一3.7 里程碑
  5. 过滤器 拦截器 controller 页面 的执行顺序
  6. centos7 减少/home分区空间,扩大/ 的空间
  7. 跨应用的访问 contentprovider
  8. Oracle 10.2.0.4 升级到 10.2.0.5
  9. 关于session应用(2)--JAVA中怎么使用session
  10. java Sting类函数