Web表上的动态元素定位器

时间:2017-08-22 14:48:48

标签: java xpath selenium-webdriver

我的第一个测试案例是添加一个我已成功自动化的记录。我的第二个测试用例是删除我在测试用例1中添加的记录。我需要你的帮助才能从web表中找到Delete按钮。首先,我想找到行(基于column1和column2中的值,在本例中为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:

  

无法找到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

1 个答案:

答案 0 :(得分:1)

您需要搜索同时具有这两个tr的{​​{1}}并从那里继续。

起点示例:

td

这将返回包含这些值的//tr[.//a[text()='ACTION20Aliant']][.//td[text()='2018-01-07']] ,现在您可以附加所需的选择器。

您需要追加的内容如下:

tr

导致:

//input[@value='Delete']

现在你可以搜索元素,如果找到则使用点击返回的对象,否则什么都不做。