java - Web 表格上的动态元素定位器

标签 java xpath selenium-webdriver

我的第一个测试用例是添加一条我已成功自动化的记录。我的第二个测试用例是删除我在测试用例一中添加的记录。我需要您的帮助才能从 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']

enter image description here

扩展的第一个 td 和删除按钮的 td 如下: enter image description here enter image description here

最佳答案

您需要搜索同时具有这两个 tdtr,并从那里继续。

起点示例:

//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/

相关文章:

java - android 将 String 数组和 String 传递给 asyncTask

sql-server - 如何在 SQL 语句中将变量传递到 XQuery 的 XPath

java - 从 XML 中搜索和显示值 - Android Java

python - 如何在 Aegis Blade 中运行 Selenium

python - 如何使用 selenium 网络驱动程序获取文本区域内容

java - 如何调试 JNI 堆损坏问题?

java - 重复写入数据库或文本文件

java - 将数字中的偶数位更改为奇数位

xpath - 如何在 XPATH 中选择此文本?

Selenium Java 类中的 javax.net.ssl.SSLHandshakeException