css中的结构性定位
结构性定位就是根据元素的父子、同级中位置来定位,css3标准中有定义一些结构性定位伪类如nth-of-type,nth-child,但是使用起来语法很不好理解,这里就不做介绍了。
Selenium中则是采用了来自Sizzle的css3定位扩展,它的语法更加灵活易懂
Sizzle
Css3的结构性定位语法
E:nth(n)
E:eq(n)
|
在其父元素中的E子元素集合中排在第n+1个的E元素
(第一个n=0)
|
E:first
|
在其父元素中的E子元素集合中排在第1个的E元素
|
E:last
|
在其父元素中的E子元素集合中排在最后1个的E元素
|
E:even
|
在其父元素中的E子元素集合中排在偶数位的E元素
(0,2,4…)
|
E:odd
|
在其父元素中的E子元素集合中排在奇数的E元素
(1,3,5…)
|
E:lt(n)
|
在其父元素中的E子元素集合中排在n位之前的E元素
(n=2,则匹配0,1)
|
E:gt(n)
|
在其父元素中的E子元素集合中排在n位之后的E元素
(n=2,在匹配3,4)
|
E:only-child
|
父元素的唯一一个子元素且标签为E
|
E:empty
|
不包含任何子元素的E元素,注意,文本节点也被看作子元素
|
匹配示例:
例如还是段的代码
<div
class="subdiv">
<ul
id="recordlist">
<p>Heading</p>
<li>Cat</li>
<li>Dog</li>
<li>Car</li>
<li>Goat</li>
</ul>
</div>
locator
|
匹配
|
css=ul > li:nth(0)
|
<li>Cat</li>
|
css=ul > *:nth(0)
css=ul > :nth(0)
|
<p>Heading</p>
|
css=ul > li:first
|
<li>Cat</li>
|
css=ul > :first
|
<p>Heading</p>
|
css=ul > *:last
css=ul > li:last
|
<li>Goat</li>
|
css=ul > li:even
|
Cat, Car
|
css=ul > li:odd
|
Dog, Goat
|
css=ul > :even
|
<p>Heading</p>
|
css=ul > p:odd
|
[error] not found
|
css=ul > li:lt(2)
|
<li>Cat</li>
|
css=ul > li:gt(2)
|
<li>Goat</li>
|
css=ul > li:only-child
css=ul > :only-child
css=ul > *:only-child
|
[error] not found (ul没有only-child)
|
css=div.subdiv > :only-child
|
<ul
id="recordlist">
… … … …
</ul> |
|