Selenium выбирают только прямые потомки WebElement - PullRequest
0 голосов
/ 01 ноября 2019

Есть ли способ сделать что-то вроде:

webElement.findElements(By.cssSelector("> li");

Я пытаюсь получить прямые дочерние элементы объекта WebElement.

Я знаю о css-селекторе "parent>children ", и это работает, как и ожидалось, но мой случай отличается.

Например:

<ul class="x">
    <li>
        <ul>
            <li>
            </li>
        </ul>
    </li>

    <li>
    </li>
</ul>
List<WebElement> webElements = driver.findElements(By.cssSelector("ul.x > li"));

возвращает только прямые дочерние элементы тега ul. Размер списка равен 2. Но у меня есть следующий вариант использования:

WebElement webElement = driver.findElement(By.cssSelector("ul.x"));
webElement.findElements(By.cssSelector("li");

Проблема здесь в том, что этот код возвращает все веб-элементы 'li', а не только прямые дочерние элементы. Размер списка на этот раз 3.

Я пробовал это:

webElement.findElements(By.cssSelector("> li");

, но это выдает ошибку

org.openqa.selenium.InvalidSelectorException: неверный селектор: указан неверный или недействительный селектор

1 Ответ

0 голосов
/ 01 ноября 2019

Вы можете использовать xpath:

WebElement webElement = driver.findElement(By.cssSelector("ul.x"));
webElement.findElements(By.xpath("./li");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...