【问题标题】:webDriver cssSelector based on inner child attributewebDriver cssSelector 基于内部子属性
【发布时间】:2014-02-06 03:14:32
【问题描述】:

这是一些示例代码以及我正在尝试做的事情:

<dl id="parentId">
    <dt>
        <a someattr="whatIwant"/>
    </dt>
    <dt>
        <a someattr="whatIwantNextTime"/>
   </dt>
</dl

我正在尝试使用 someattr="whatIwant" 选择 a 元素。这是我目前的 cssselector:

"dl[id='parentId']>a[someattr='whatIwant']"

还有:

"dl[id='parentId']>dt>a[someattr='whatIwant']"

不幸的是,这些都不起作用;我似乎正确地遵循了 w3schools 模板,但是当我尝试运行它时,我得到元素找不到异常,或者如果我添加“>dt>”,则出现非法字符串异常。有没有人知道如何做到这一点?

谢谢。

【问题讨论】:

    标签: java selenium css-selectors


    【解决方案1】:

    编辑:您正在使用直接后代选择器策略 (&gt;),这仅在元素是直接子元素时才有效。如果你想要一个后裔,使用 ()

    dl#parentId a[someattr='whatIwant']
    

    另外,假设您的whatIwant 是唯一的,那么这个选择器将完美地工作..

    更进一步,你可以这样做:

    dl#parentId > td:nth-child(X) > a
    

    其中X 是 1、2、3(您想要的 &lt;dt /&gt; 的索引。

    如果您指定 CSS 选择器,请确保您使用的是 By.cssSelector 策略,而不是其他任何策略。

    【讨论】:

      【解决方案2】:

      所以显然我没有做足够的研究,因为我只是在发布后 5 分钟才发现这一点。后代选择器 ' ' 完美运行,即:

      "dl[id='parentId'] a[someattr='whatIwant']"
      

      【讨论】:

        猜你喜欢
        • 2014-02-21
        • 2016-11-11
        • 2011-12-14
        • 2018-10-14
        • 2015-09-19
        • 1970-01-01
        • 1970-01-01
        • 2013-10-30
        • 1970-01-01
        相关资源
        最近更新 更多