小编Cod*_*rut的帖子

Selenium 仅选择 WebElement 的直接子级

有没有办法做类似的事情:

webElement.findElements(By.cssSelector("> li");
Run Code Online (Sandbox Code Playgroud)

我正在尝试获取 WebElement 对象的直接子对象。

我知道 css 选择器“父>子”并且它按预期工作,但我的情况不同。

例如:

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

    <li>
    </li>
</ul>
Run Code Online (Sandbox Code Playgroud)
List<WebElement> webElements = driver.findElements(By.cssSelector("ul.x > li"));
Run Code Online (Sandbox Code Playgroud)

仅返回 ul 标记的直接子子级。列表的大小是 2。但我有下一个用例:

WebElement webElement = driver.findElement(By.cssSelector("ul.x"));
webElement.findElements(By.cssSelector("li");
Run Code Online (Sandbox Code Playgroud)

这里的问题是,此代码返回所有“li”Web 元素,而不仅仅是直接子元素。这次List的大小是3。

我试过这个:

webElement.findElements(By.cssSelector("> li");
Run Code Online (Sandbox Code Playgroud)

但这会引发错误

org.openqa.selenium.InvalidSelectorException:无效选择器:指定了无效或非法选择器

java selenium css-selectors selenium-webdriver

7
推荐指数
1
解决办法
2385
查看次数