java - 使用 Selenium、TestNG、java 的 Arraylist 推送动态表行

标签 java selenium selenium-webdriver automated-tests

enter image description here

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/

相关文章:

java - 为什么 HttpURLConnection.getResponseCode() 抛出 IOException?

java - 打印并返回正确的列表

java - GridLayout 之外的按钮布局

javascript - 当您从其他地方提取元素时,验证 URL 的顺序/组成

selenium - 无法选择元素

c# - SwitchTo IFrame,其中 XPath 包含 id 的一部分

带有 IE 的 SwitchTo() 的 C# WebDriver 问题

python-3.x - 运行 firefox headless 问题

java - 无法抛出 NoSuchElementException

java - 无法使用 testng 和 maven 生成 allure 报告