webDriver cssSelector基于内部子属性

时间:2014-02-05 19:11:32

标签: java selenium css-selectors

这是一些示例代码以及我要做的事情:

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

我试图用someattr =“whatIwant”选择一个元素。这是我目前的cssselector:

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

以及:

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

不幸的是,这些都不起作用;我似乎正在正确地遵循w3schools模板,但是当我尝试运行时,我得到的元素无法找到异常,或者如果我添加'&gt; dt&gt;',则会出现非法的字符串异常。有没有人对如何做到这一点有任何见解?

感谢。

2 个答案:

答案 0 :(得分:2)

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

dl#parentId a[someattr='whatIwant']

此外,假设您的whatIwant是唯一的,那么此选择器将完美运行..

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

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

其中X为1,2,3(您想要的<dt />的索引。

如果要指定CSS选择器,还要确保使用By.cssSelector策略,而不是其他任何内容。

答案 1 :(得分:0)

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

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