在 table 行 Java 中查找非唯一元素

Find a non-unique element in a table of rows Java

我正在尝试识别并 select 页面上的一个非唯一元素。我通过为我正在使用的 table 创建一个行列表来解决这个问题(见下文)并且仍然得到错误的元素。这是用例:

我需要 select 此 table 中的第 3 行,所以我创建了一个带有 "tr" 标签的 elemnets 列表。一旦我有了这个列表,我就会去寻找具体的名字,在这个 caes Octopus 中,Complex。一旦我找到这个名称,我就使用我的 WebElement 对象来查找与我想要的该行数量相对应的元素。在这种情况下圈出 105.00。然而,我总是在页面中获得第一个金额,在这个例子中,突出显示的 170.00。每行的所有元素都具有相同的名称。我需要 WebDriver 只关注我找到的行而不是整个页面。

我试图在列表中列出一个列表。这些元素未在页面上编入索引,因此我不能只执行 get(0) 来查找我要查找的内容。我试图在与我的数量 selector 相匹配的行元素中找到元素。这两种技术我都碰壁了。到目前为止,我针对此问题的代码如下:

    dispatchTable = driver.findElement(By.cssSelector("#dispatchBoardTable"));
    List<WebElement> dispatchItems = dispatchTable.findElements(By.tagName("tr"));
    System.out.println("Looking for " + Accountant.getClientName() + " in Dispatch Board");
    for(WebElement we : dispatchItems){ 

        if(we.equals(null))
            continue;

        //If we find the name we're looking for, get the amount for that name.
        if(we.getText().contains(Accountant.getClientName())){

            clientTotal = we.findElement(By.xpath("//*[starts-with(@data-bind, 'text: Amount')]")).getText();
            System.out.println("Total for this client Dispatch Board is: " + clientTotal);
        }
    }

使用下面一行查找xpath dispatchTable = driver.findElement(By.xpath("")); 检查它是否正常工作。 要么 如果您使用 CSS 然后检查两个相同的数据(TD 数据)CSS 选择器是否相同。

像下面这样使用

  clientTotal = we.findElement(By.xpath("td[starts-with(@data-bind, 'text: Amount')]")).getText();

使用 'td' 而不是 '*' 当然我们可以使用任何东西。