Arraylist, чтобы выдвинуть динамическую строку таблицы, используя Selenium, TestNG, Java - PullRequest
0 голосов
/ 15 октября 2018

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());
}

1 Ответ

0 голосов
/ 15 октября 2018

При использовании . в 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));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...