我的第一个测试用例是添加一条我已成功自动化的记录。我的第二个测试用例是删除我在测试用例一中添加的记录。我需要您的帮助才能从 Web 表中找到“删除”按钮。首先,我想找到该行(基于第 1 列和第 2 列中的值,在本例中为 ACTION20ALIANT 和 2018-01-07),然后转到最后一列该行,然后单击“删除”按钮。“删除”按钮的位置根据记录名称的不同而有所不同。下面是我的方法,它给出了错误。
public static void Test(WebDriver driver) {
WebElement table = driver.findElement(By.name("frmSMain"));
List<WebElement> rows = table.findElements(By.tagName("tr"));
for (WebElement row : rows) {
if(row.findElement(By.xpath("//tr/td[text()='ACTION20Aliant']/following-sibling::td[text()=' 2018-01-07 ']")).getText().equals(" 2018-01-07 "))
row.findElement(By.cssSelector("td:last-child input")).click();
}
}
代码无法识别我的 xpath:
Unable to find element with
xpath == //tr/td[text()='ACTION20Aliant']/following-sibling::td[text()=' 2018-01-07']
最佳答案
您需要搜索同时具有这两个 td
的 tr
,并从那里继续。
起点示例:
//tr[.//a[text()='ACTION20Aliant']][.//td[text()='2018-01-07']]
这将返回具有这些值的 tr
,现在您可以附加所需的选择器。
您需要附加的内容可能如下所示:
//input[@value='Delete']
结果:
//tr[.//a[text()='ACTION20Aliant']][.//td[text()='2018-01-07']]//input[@value= '删除']
现在您可以搜索该元素,如果找到,则单击返回的对象,否则不执行任何操作。
关于java - Web 表格上的动态元素定位器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45820856/