【问题标题】:CSS Selector - get element knowing element childsCSS Selector - 获取元素知道元素的孩子
【发布时间】:2013-08-03 21:57:05
【问题描述】:

我想在正确的列中获取包含span.selected 的tr 元素。我需要使用一个选择器来完成。

判断元素是否存在:

By.CssSelector("tr[role='row'].jqgrow td[aria-describedby$='Default'] span.selected")

但它返回 span.selectedIWebElement.. 我怎样才能获得 tr[role='row'].jqgrowIWebElement(使用 CssSelector 或 XPath)?

【问题讨论】:

    标签: c# xpath selenium webdriver css-selectors


    【解决方案1】:

    这样的东西可能适用于 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 选择器来实现这一点。

    【讨论】:

      【解决方案2】:

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

      CSS selector for "foo that contains bar"?.

      您将需要使用 XPath,它能够根据孩子选择父母。您可以查看这篇文章以获取有关使用 XPath 选择具有特定子节点的父节点的信息:

      XPath find all elements with specific child node

      【讨论】:

        猜你喜欢
        • 2014-09-19
        • 2020-10-30
        • 1970-01-01
        • 2019-09-09
        • 2020-01-15
        • 2021-01-05
        • 2013-08-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多