是否有Selenium的相对CSS定位器?

时间:2012-10-20 21:31:51

标签: selenium css-selectors xpath

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

使用Selenium XPath定位器我可以这样写:

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

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

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

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

P.S。
我知道我可以使用.//表达式,但后来我将页面查找操作与其后代的查找相结合,这并不总是可取的。

1 个答案:

答案 0 :(得分:3)

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

如果您必须执行相对查找,XPath是您现在唯一的选择。