4

假设我在#myPage元素下寻找一些div元素。我的目标是使用 CSS 选择器并将搜索限制在#myPage后代。

使用 Selenium XPath 定位器,我可以编写如下内容:

WebElement page = driver.findElement(new By.ById("myPage"));
....
List<WebElement> item = page.findElements(new By.ByXPath(".//div"));

但是,尝试使用 CSS 会产生文档中的所有div,而不仅仅是#myPage的后代:

WebElement page = driver.findElement(new By.ById("myPage"));
....
List<WebElement> item = page.findElements(new By.ByCssSelector("div"));

最大的区别.//在于使 XPath 表达式相对的前缀。我在 CSS 语法中找不到类似的属性,我想知道它是否可能。

PS
我知道我可以使用#myPage > div表达式,但是我将页面查找操作与其后代的查找结合起来,这并不总是可取的。

4

1 回答 1

5

此功能尚不存在。在 Selectors API level 2 for DOM 中提出了一个类似的功能,并在 Selectors level 4 中编码为relative selectors,但我不知道 Selenium 是否会实现这样的功能。

如果您必须执行相对查找,那么 XPath 是您目前唯一的选择。

于 2012-10-21T06:19:22.597 回答