selenium - 如何使用 selenium 处理表
问题描述
处理表格时一头雾水 1.如何点击表格中的复选框 2.如何点击表格中的值 3.如何处理动态和静态表格 4.如何计算行数和列数表中可用
解决方案
最通用的方法是使用tagName
值为tr
和的方法td
。
@Test
public void testWebTable() {
WebElement simpleTable = driver.findElement(By.xpath("//span[2]"));
// Get all rows
List<WebElement> rows = simpleTable.findElements(By.tagName("tr"));
// rows count assert and count
Assert.assertEquals(rows.size(),4);
System.out.println("Total Rows count in table" + rows.size());
// Print data from each row
for (WebElement row : rows) {
List<WebElement> cols = row.findElements(By.tagName("td"));
// column count assert and count
Assert.assertEquals(cols.size(),4);
System.out.println("Total Column count in each row" + cols.size());
for (WebElement col : cols) {
// to select specific column compare its text
if (col.getText().equals("some text")) {
col.click(); // assuming td contains check box or link
col.sendKeys(); // assuming td contains text box
}
// print complete table data
System.out.print(col.getText() + "\t");
} System.out.println();
}
}
同样要单击,您必须WebElement
在第二个 for 循环中使用单击。要处理动态表,您必须使用 xpath 轴策略来定位元素,例如将 xpath 写入未更改的静态列,然后使用 xpath 轴方法,如前置、跟随、跟随兄弟等。
推荐阅读
- c - 除了通过 main 的 argv 之外,还有另一种将用户参数传递给程序的方法吗?
- r - 基于另一个搜索数据框过滤和汇总数据框
- android - 将片段添加到导航图的 Backstack
- python - 在python中从/向文件写入和读取列表
- angular - 过滤器按钮未组合过滤 JSON 的逻辑 - mat-dialog
- python - 为数组中的图形组合点?
- ember.js - 如何关闭分支和大多数 ember-try 场景的 Percy 快照?
- android - Kotlin:找不到现有的文本文件
- postgresql - Knex Raw 选择带有变量的 Postgresql
- c++ - C++ 成员函数回调和对象生存期