为什么这个 xpath 有效,但 CSS 选择没有 [找不到定位器] 对于 UL



我正在尽可能地为我的选择器从xpath切换到css。

这在xpath中有效:

//ul[contains(@id,'district-switcher')]

但是我认为在css中是等价的:

css=ul#district_switcher

只给出定位器未找到。我没有在css中使用contains因为我认为不需要使用

我正在使用firefox selenium IDE

HTML:

<ul id="district-switcher" class="nav nav-pills" style="background-color:
transparent;"><li class="dropdown open"><a class="dropdown-toggle" href="#">
Change district
<b class="caret"></b></a><ul class="dropdown-menu"><li>...

我用css= selector方法做错了什么?

简单的拼写错误:#district_switcher#district-switcher不一样

我不确定css=部分,但你写的是district_switcher。以前是district-switcher。更准确地说应该是ul[id*=district-switcher]

等价于//ul[contains(@id,'district-switcher')]的CSS是:

ul#district-switcher
例如:

require 'nokogiri'
doc = Nokogiri::HTML(<<EOT)
<ul id="district-switcher" class="nav nav-pills" style="background-color:
transparent;"><li class="dropdown open"><a class="dropdown-toggle" href="#">
Change district
<b class="caret"></b></a><ul class="dropdown-menu"><li>
EOT
doc.at('ul#district-switcher')['class'] # => "nav nav-pills"
doc.at('ul#district-switcher a').text # => "nChange districtn"

Nokogiri支持jQuery的CSS选择器,这使得它成为在HTML XML文档中导航的一种非常强大的方式。

最新更新