因此,当应用于未在选择器中指定标记类型的元素时,:nth-of-type
选择器的行为会遇到一种特殊的差异。
采用以下 HTML :
<div class="parent-class">
<header>...</header>
<div class="child-class">...</div>
<div class="child-class">...</div>
</div>
现在,这个选择器
.parent-class .child-class:nth-of-type(1)
应该指向第一个子div
元素,它在 Chrome 59 和 Firefox 54 中执行,但不在Mink-drived Selenium浏览器中( Chrome 53 来自selenium / hub:3.0.1-fermium和 Firefox 50 来自selenium / node-firefox-debug:2.53.0)。
nth-of-type
在这些浏览器中做的是完全忽略元素类型 - 这意味着,要使选择器工作,必须指定:
.parent-class .child-class:nth-of-type(2)
或
.parent-class div.child-class:nth-of-type(1)
问题:
为什么在Selenium浏览器中会忽略元素类型?
答案 0 :(得分:2)
不知道Selenium与:nth-of-type()
有问题。也许这是Mink的一个错误,因为这种行为显然不正确 - :nth-of-type()
不应该要求类型选择器工作,如我的回答here中所述。
答案 1 :(得分:1)
CssSelector
组件的限制,Mink使用 Mink使用CssSelector
将元素翻译为xpath
,这可由驱动程序解释。
这个工具根本不完全支持几种类型的CSS选择器,实际上在official documentation中说明了:
尚不支持几个伪类:
*:first-of-type,*:last-of-type,*:nth-of-type,*:nth-last-of-type,*:only-of-type。 (这些使用元素名称(例如li:first-of-type)但不包含*。