findElement не работает должным образом в цикле for-each - PullRequest
0 голосов
/ 24 марта 2020

Я полностью застрял и понятия не имею, почему я получаю вывод, который у меня есть. Вот соответствующий фрагмент.

WebElement section = driver.findElement(By.xpath("//div[contains(@class,'_main')]"));
List<WebElement> searchResults = new ArrayList<WebElement>();
searchResults.addAll(section.findElements(By.xpath("//div[contains(@class,'_listing')]")));
for (WebElement element : searchResults) {
    System.out.println(element.getAttribute("innerHTML"));
    System.out.println(element.findElement(By.xpath("//p[contains(@class,'_2tux')]")).getText());

    currentlistings.add(newListing('f',element.findElement(By.xpath("//a[contains(@class,'_1oem')]")).getAttribute("href"),
    element.findElement(By.xpath("//p[contains(@class,'_2tux')]")).getText(),
    element.findElement(By.xpath("//div[contains(@class,'_f3l _4x3g')]")).getText()));
}

Код, по-видимому, функционирует нормально при сохранении элементов в списке, размер корректен, и когда я перебираю внутренние элементы списка HTML, как и ожидалось.

Однако, когда я тогда пытаюсь использовать findElement для каждого из повторяющихся элементов, он, по-видимому, читает HTML из элемента с индексом 0, хотя непосредственно перед командой выводится html из правильного индекса. Любые указатели будут высоко оценены.

1 Ответ

1 голос
/ 24 марта 2020

Вам нужно использовать .//.

element.findElement(By.xpath(".//p[contains(@class,'_2tux')]")).getText(),
element.findElement(By.xpath(".//div[contains(@class,'_f3l _4x3g')]")).getText()));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...