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));
关于java - 使用 Selenium、TestNG、java 的 Arraylist 推送动态表行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52812371/