我必须使用selenium Xpath获取特定行中存在的列的计数。 按照我为此编写的代码:
WebElement table = CoreCommands.locateElement(context, By.xpath("//table[@id='addRowTable_selected_a']"));
if (table != null) {
List<WebElement> ts_rows = CoreCommands.locateElementList(context, table,By.xpath("//table[@id='addRowTable_selected_a']/tbody/tr"));
int ts_cntRows = ts_rows.size();
for(int i=4;i<=ts_cntRows;i++)
{
List<WebElement> ts_cols = CoreCommands.locateElementList(context, table,By.xpath("//table[@id='addRowTable_selected_a']/tbody/tr[i]/td"));
int ts_cntCols = ts_cols.size();
for(int j=1;j<=ts_cntCols;j++)
{
String str= CoreCommands.locateElement(context, By.xpath("//table[@id='addRowTable_selected_a']/tbody/tr[i]/td[j]")).getText();
System.out.println(str);
}
}
在ts_cntCols中为任何行返回零。
答案 0 :(得分:0)
我希望使用xpath有问题。让我们看看上面使用的“// table [@ id ='addRowTable_selected_a'] / tbody / tr [i] / td”这只是字符串而不是传递动态我价值,对吗?所以尝试下面的
"//table[@id='addRowTable_selected_a']/tbody/tr["+i+"]/td"
同样对列xpath执行相同操作以获取文本。
谢谢你, 穆拉利
答案 1 :(得分:0)
计算第3行中每行的单元格数量的示例:
WebDriver driver = new FirefoxDriver();
driver.get("http://the-internet.herokuapp.com/tables");
// iterate each row from row 3
List<WebElement> rows = driver.findElements(By.xpath("//table[@id='table1']/tbody/tr[position() > 2]"));
for (WebElement row : rows) {
// get all the cells from the row
List<WebElement> cells = row.findElements(By.cssSelector("td"));
// print the number of columns
System.out.printf("columns: %d%n", cells.size());
// iterate each column
for (WebElement cell : cells) {
// print the content
System.out.println(cell.getText());
}
}
driver.quit();