java - Arraylist使用Selenium,TestNG,java推送动态表行-LMLPHP

driver.findElement(By.id("lnkLogin")).click();

WebElement  cmp = driver.findElement(By.id("txtCompanySearch"));
cmp.sendKeys("Demo Company");

driver.findElements(By.xpath(".//*[@id=\"TenantTBL\"]/tbody/tr[5]/td")).get(0).click();


上面的这段代码对我有用,但它可以作为静态xpath索引用于选择,
但我想获取与我的sendKeys值匹配的所有行。

我已经尝试过了,但这不起作用

ArrayList<Integer> numbers = new ArrayList<Integer>();
By elems = By.xpath(".//*[@id=\"TenantTBL\"]/tbody/tr");
WebElement select = driver.findElement(elems);
List<WebElement> matches = select.findElements(By.xpath(".//*[@id=\"TenantTBL\"]/tbody/tr"));
List<String> currentVals = new ArrayList<>();
for (WebElement match : matches) {
    currentVals.add(match.getText());
}

最佳答案

.中使用xpath时,您正在使用当前上下文,因此

WebElement select = driver.findElement(By.xpath(".//*[@id=\"TenantTBL\"]/tbody/tr"));
List<WebElement> matches = select.findElements(By.xpath(".//*[@id=\"TenantTBL\"]/tbody/tr"));


等于

List<WebElement> matches = select.findElements(By.xpath(".//*[@id=\"TenantTBL\"]/tbody/tr//*[@id=\"TenantTBL\"]/tbody/tr"));


基本上,您正在寻找一个本身就是孩子的元素。只需直接定位元素

By elems = By.xpath(".//*[@id=\"TenantTBL\"]/tbody/tr");
List<WebElement> matches = driver.findElements(elems));

10-07 19:15
查看更多