【问题标题】:Is there relative CSS locator for Selenium?Selenium 是否有相对的 CSS 定位器?
【发布时间】:2012-10-11 04:02:22
【问题描述】:

假设我在 #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 语法中找不到类似的属性,我想知道它是否可能。

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

【问题讨论】:

  • 我会试试这个:driver.findElements(By.cssSelector("#myPage div")) 无论如何,您的第一个操作是查找具有特定 ID 的页面。第二个操作 - 正在寻找页面上的元素('div'后裔)。 "#myPage div" cssSelector 似乎可以联合您的操作
  • 感谢您的回复,但并不总是需要耦合这些操作。

标签: selenium css-selectors xpath


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2022-07-20
    • 1970-01-01
    • 2023-03-30
    • 2020-02-03
    • 1970-01-01
    • 1970-01-01
    • 2011-04-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多