在 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' 而不是 '*' 当然我们可以使用任何东西。
我正在尝试识别并 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' 而不是 '*' 当然我们可以使用任何东西。