我们有一个基于大量表格的网站。行中的每个单元格都是可单击的。我正在研究一种通过提供我想要点击的表名和值来动态构建cssSelector信息的方法。我越来越近了(我想)。
使用ToolsQA的练习表,说我想为值"台湾"
建立cssSelector。它的cssSelector是:.tsc_table_s13 > tbody:nth-child(4) > tr:nth-child(3) > td:nth-child(2)
我正在遍历表格,并且已经成功地使用我指定的值("台湾")进入单元格,但是,我不知道如何获取值它当前所在的行和列。
以下是我目前使用的代码:
driver.get("http://toolsqa.com/automation-practice-table/");
String table = ".tsc_table_s13 > tbody:nth-child(4)";
String cellValue = "Taiwan";
getCell(table, cellValue);
// Get the cell of a particular value
public static void getCell(String table, String value) throws IOException{
// Grab the table
WebElement tableName = driver.findElement(By.cssSelector(table));
// Now get all the TR elements from the table
List<WebElement> allRows = tableName.findElements(By.tagName("tr"));
// And iterate over them, getting the cells
for (WebElement row : allRows) {
List<WebElement> cells = row.findElements(By.tagName("td"));
// Print the contents of each cell
for (WebElement cell : cells) {
// System.out.println(cell.getText());
if (cell.getText().equals(value))
{
String cellValue = table + " > tr:nth-child(" + row. + ") > td:nth-child(" + cell + ")";
System.out.println(cellValue);
} // end if text equals
} // end for loop for cells
} // end for loop for all rows
} // end getCell function
答案 0 :(得分:1)
以下是一个快速示例,说明如何使用XPath在表中查找文本并获取对元素的引用。您提供要搜索的文本,并将其插入到XPath中。下面的XPath,搜索包含该文本的TD
。这只是一个简单的案例。如果您的表格中有大量重复文字,那么您必须发布一些示例,以便我可以更新代码以将其考虑在内。
String searchText = "China";
driver.get("http://toolsqa.com/automation-practice-table/");
WebElement e = driver.findElement(By.xpath("//td[text()='" + searchText + "']"));
System.out.println(e.getText()); // you can get the text in the cell
System.out.println(e.getAttribute("outerHTML")); // you can get the HTML of the TD
e.click(); // you can click the element also but in this case it won't do anything since it's just a TD with text