CSS Selector - 获取元素知道元素子元素

时间:2013-08-02 14:59:45

标签: c# xpath selenium webdriver css-selectors

我想在正确的列中获取包含tr的{​​{1}}元素。我需要使用一个选择器来完成它。

它找到元素是否存在:

span.selected

但它返回By.CssSelector("tr[role='row'].jqgrow td[aria-describedby$='Default'] span.selected") IWebElement ..如何获得span.selected IWebElement(使用CssSelector或XPath)?

2 个答案:

答案 0 :(得分:3)

这样的东西可能适用于XPath

//tr[@role='row']
    [contains(@class, 'jqgrow')]
    [.//td[ends-with(@aria-describedby, 'Default')][.//span[contains(@class, 'selected')]]]

如果元素有多个类,那么用contains(@class, 'jqgrow')替换各种(@class and contains(concat(' ', normalize-space(@class), ' '), ' jqgrow '))(从Python的cssselect借来的技巧)更安全(且可读性更低)

我认为单独使用CSS选择器无法实现这一目标。

答案 1 :(得分:2)

我不相信CSS会让你这样做,因为你需要一个父选择器:

CSS selector for "foo that contains bar"?

您需要使用XPath,它能够根据孩子选择父母。您可以查看此帖子,了解有关使用XPath选择具有特定子节点的父级的信息:

XPath find all elements with specific child node