Добрый день.
Можно ли искать элементы в зависимости от текущего элемента?
Например,
`< table id=“tbl”>
WebElement element = driver.findElement(By.id("tbl")); element.findElement(By.Xpath("tr/td")).getText();
Добрый день.
Можно ли искать элементы в зависимости от текущего элемента?
Например,
`< table id=“tbl”>
WebElement element = driver.findElement(By.id("tbl")); element.findElement(By.Xpath("tr/td")).getText();
Можно. Xpath относительно текущего элемента начинается с точки .
Например ./
или .//
Используя Selenide:
=Search for parents/children=
$(“td”).parent()
$(“td”).closest(“tr”)
$(“.btn”).closest(“.modal”)
$(“div”).find(By.name(“q”))
Не совсем то…
Поиск элемента внутри синтаксиса Selenium. Т.е. element в моем примере - уже Java-объект, содержащий в себе объект DOM. Т.о. поиск идет относительно уже найденного объекта.
Ответ можно.
Должна работать такая конструкция:
WebElement element = driver.findElement(By.id("tbl"));
element.findElement(By.Xpath("./tr/td")).getText();
@Mes, спасибо!
В итоге код для поиска элемента от полученного элемента вышел таким:
int cnt = 1;
List<WebElement> elements = driver.findElements(By.xpath(".//div[@class='g']"));
System.out.printf("Total element on page: %d%n", elements.size());
for (WebElement e : elements) {
try {
System.out.println(cnt + ": " + e.findElement(By.xpath("./div[@class='rc']/h3/a")).getText());
} catch (NoSuchElementException error){
System.out.println(cnt + ": " + "Error!!! Element not found!!!! " + error.getMessage());
}
cnt++;
}