WebDriver高级应用实例(9)
9.1封装操作表格的公用类
目的:能够使自己编写操作表格的公用类,并基于公用类进行表格中的元素的各类操作
被测网页的网址的HTML代码:
<html>
<body>
<table width="400" border="1" id="table">
<tr>
<td align="left"><p>第一行第一列</p><input type="text"></input></td>
<td align="left"><p>第一行第二列</p><input type="text"></input></td>
<td align="left"><p>第一行第三列</p><input type="text"></input></td>
</tr>
<tr>
<td align="left"><p>第二行第一列</p><input type="text"></input></td>
<td align="left"><p>第二行第二列</p><input type="text"></input></td>
<td align="left"><p>第二行第三列</p><input type="text"></input></td>
</tr>
<tr>
<td align="left"><p>第三行第一列</p><input type="text"></input></td>
<td align="left"><p>第三行第二列</p><input type="text"></input></td>
<td align="left"><p>第三行第三列</p><input type="text"></input></td>
</tr>
</table>
</body>
</html>
Java语言版本的API实例代码
Table类为封装了各种表格操作方法的公用类内容如下
package cn.table; import java.util.List;
import org.openqa.selenium.By;
import org.openqa.selenium.NoSuchElementException;
import org.openqa.selenium.WebElement; public class Table {
// 声明一个WebEelment对象,用于存储页面的表格元素对象
private WebElement _table; // 为构造函数传入页面表格元素对象参数,调用table的set_table方法,将页面表格元素复制给_table
public Table(WebElement table) {
set_table(table);
}
//获取页面表格的对象方法
public WebElement get_table() {
return _table;
} public void set_table(WebElement _table) {
this._table = _table;
} // 返回表格的行数
public int getRowCount() {
List<WebElement> tableRow = _table.findElements(By.tagName("tr"));
return tableRow.size();
}
//获取表格的列数
public int getColumnCount() {
List<WebElement> tableRows = _table.findElements(By.tagName("tr"));
return tableRows.get(0).findElements(By.tagName("td")).size();
} // 获取表格中某行某列的单元格对象
public WebElement getCell(int rowNo, int colNo) {
try {
List<WebElement> tableRows = _table.findElements(By.tagName("tr"));
System.out.println("行总数:" + tableRows.size());
System.out.println("行号:" + rowNo); List<WebElement> tableColumns = tableRows.get(rowNo - 1).findElements(By.tagName("td"));
System.out.println("列总数:" + tableColumns.size());
System.out.println("列号:" + colNo); return tableColumns.get(colNo - 1);
} catch (NoSuchElementException e) {
// TODO: handle exception
throw new NoSuchElementException("没有找到相关的元素");
}
} // 获取表格中某行某列的单元格中的某个页面元素对象,by参数用于定位某个表
public WebElement getWebElementInCell(int rowNo, int colNo, By by) {
try {
List<WebElement> tableRows = _table.findElements(By.tagName("tr"));
WebElement currentRow = tableRows.get(rowNo - 1);
List<WebElement> tablecols = currentRow.findElements(By.tagName("td"));
WebElement cell = tablecols.get(colNo - 1);
return cell.findElement(by);
} catch (NoSuchElementException e) { throw new NoSuchElementException("没有找到相关的元素");
}
}
}
测试类:调用封装的Table类进行基于表格元素的各类操作
package cn.table; import org.testng.annotations.Test;
import org.testng.annotations.BeforeMethod;
import org.openqa.selenium.By;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.Assert;
import org.testng.annotations.AfterMethod; public class testTable {
WebDriver driver;
String url = "file:///E:/%E6%9D%90%E6%96%99/selenium/table.html";
@Test
public void testTableDome() {
WebElement webTable=driver.findElement(By.tagName("table"));
Table table=new Table(webTable);
WebElement cell=table.getCell(3, 2);
Assert.assertEquals(cell.getText(), "第三行第二列");
WebElement cellInut=table.getWebElementInCell(3, 2, By.tagName("input"));
cellInut.sendKeys("第三行的第二列表格被找到"); }
@BeforeMethod
public void beforeMethod() {
System.setProperty("webdriver.chrome.driver", "D:\\WebDriver\\chromedriver_win32\\chromedriver.exe");
driver = new ChromeDriver();
driver.manage().window().maximize();
driver.navigate().to(url);
} @AfterMethod
public void afterMethod() {
driver.quit();
} }
WebDriver高级应用实例(9)的更多相关文章
- WebDriver高级应用实例(10)
10.1控制HTML5语言实现的视频播放器 目的:能够获取html5语言实现的视频播放器视频文件的地址.时长.控制进行播放暂停 被测网页的网址: http://www.w3school.com.cn/ ...
- WebDriver高级应用实例(8)
8.1使用Log4j在测试过程中打印日志 目的:在测试过程中,使用Log4j打印日志,用于监控和后续调试测试脚本 被测网页的网址: http://www.baidu.com 环境准备: (1)访问ht ...
- WebDriver高级应用实例(7)
7.1在测试中断言失败的步骤进行屏幕截图 目的:在测试过程中,在断言语句执行失败时,对当前的浏览器进行截屏,并在磁盘上新建一个yyyy-mm-dd格式的目录,并在断言失败时新建一个已hh-mm-ss格 ...
- WebDriver高级应用实例(6)
6.1精确比较网页截图图片 目的:对于核心界面进行截屏,并且使用测试过程中的截图和以前测试过程中的截图进行比较.确认页面是否发生了改变 被测网页的网址: http://www.baidu.com Ja ...
- WebDriver高级应用实例(5)
5.1对象库(UI Map) 目的:能够使用配置文件存储被测试页面上的元素的定位方式和定位表达式,做到定位数据和程序的分离.方便不具备编码能力的测试人员进行修改和配置. 被测网页的网址: http:/ ...
- WebDriver高级应用实例(4)
4.1操作web页面的滚动条 被测网页的网址: http://v.sogou.com Java语言版本的API实例代码 import org.testng.annotations.Test; impo ...
- WebDriver高级应用实例(3)
3.1自动化下载某个文件 被测网页的网址: https://pypi.org/project/selenium/#files Java语言版本的API实例代码 import java.util.Has ...
- WebDriver高级应用实例(2)
2.1在日期选择器上进行日期选择 被测网页的网址: https://www.html5tricks.com/demo/Kalendae/index.html Java语言版本的API实例代码 impo ...
- WebDriver高级应用实例(1)
1.1使用JavaScriptExecutor单击元素 被测网页的网址: http://www.baidu.com Java语言版本的API实例代码 import org.testng.annotat ...
随机推荐
- 解决mysql默认的8小时自动断开连接
语言:javaEE 框架:spring mvc+spring+mybatis 数据库:mysql8 WEB服务器:tomcat8 背景: 在试运营阶段发现发生“连接超时”异常 抛出异常: Cause: ...
- Java设计模式——结构型模式
Java设计模式中共有7种结构型模式:适配器模式.装饰模式.代理模式.外观模式.桥接模式.组合模式.享元模式.其中对象的适配器模式是各种模式的起源,其关系如下面的图:1.适配器模式 适配器模式将某个类 ...
- boost--线程同步
1.互斥锁(互斥量) mutex是独占式的互斥锁.timed_mutex增加了超时功能. 成员函数:lock()用于锁定,try_lock()为非阻塞版本的锁定,unlock()用于解锁.timed_ ...
- Win10通知区域图标设置;windows10系统图标合并;Windows10系统通知合并
1.一直喜欢Windows7的通知图标合并 2.通过查阅找到方法 a.输入命令语句 win+R :shell:::{05d7b0f4-2121-4eff-bf6b-ed3f69b894d9} 回 ...
- Spring boot 集成Dubbo简单版,准备工作,
一.GitHub上找寻Dubbo资源 阿里巴巴在其GitHub上已经写好一个Github案例所以我们只要进入其Git上就可以看到和clone这个项目 二.阿里巴巴GitHub使用 https://gi ...
- 访问前台页面${pageContext.request.contextPath}/el表达式失效问题解决
访问前台页面${pageContext.request.contextPath}/el表达式失效问题解决 2017年05月09日 10:54:18 AinUser 阅读数:922 标签: el表达式4 ...
- java学习路线图(2018年最新版)
最近有些网友问我如何自学 Java 后端,还有些是想从别的方向想转过来,但都不太了解 Java 后端究竟需要学什么,究竟要从哪里学起,哪些是主流的 Java 后端技术等等,导致想学,但又很迷茫,不知从 ...
- cyclone IV中DDR的一个疑惑
的生成的DDR2 IP中DDR的时钟竟然是双向的,而在arria10中生成的DDR4则是输出,而DDR2的datasheet上也指出ck和ck#是输入,不知为什么? inout mem_clk , i ...
- Python之turtle库
在命令行下```python -m pip install turtle``` 大致有两种命令: 运动命令: forward(distance) #向前移动距离distance代表距离 backwar ...
- webService之helloword(java)rs
webservice之rs(helloworld) 1.pom.xml文件 <dependencies> <!-- 使用CXF RS开发 --> <dependency& ...