Поиск дочернего элемента от текущего. Есть ли способы?

Добрый день.

Можно ли искать элементы в зависимости от текущего элемента?
Например,
`< table id=“tbl”>

demo `

WebElement element = driver.findElement(By.id("tbl")); element.findElement(By.Xpath("tr/td")).getText();

Можно. Xpath относительно текущего элемента начинается с точки .

Например ./ или .//

4 лайка

Дополню еще xpath cover page - W3C

http://zvon.org/xxl/XPathTutorial/General_rus/examples.html

Пример #11

Используя 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();
1 лайк

@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++;
        }