Capybara,按ID和Class检查HTML元素

mic*_*ael 18 capybara

来自初学者的两个问题.

Q1-是否可以通过ID和类断言HTML节点的存在?例如,要查看是否存在以下元素:

<div class="drawer" id="first"....>
Run Code Online (Sandbox Code Playgroud)

我见过你可以使用类似的东西:

 page.should have_css('div.drawer')
 page.should have_css('div#first')
Run Code Online (Sandbox Code Playgroud)

但我们可以以某种方式查询两个参数的存在,我尝试了以下,但没有工作:

page.should have_selector("div", :class => "drawer", :id => "first")
Run Code Online (Sandbox Code Playgroud)

Q2-是否可以在"内部"水豚方法中添加2个选择器,即,我已经看到您可以通过以下方式限制范围:

within("//div[@id='first']") do
Run Code Online (Sandbox Code Playgroud)

但我们可以通过以某种方式添加id ='first'和class ='drawer'来过滤那个DIV吗?

非常感谢!

Jus*_* Ko 37

您可以组合选择器.

对于您的第一个问题,以下检查ID为"first"和class"抽屉"的div:

page.should have_css('div#first.drawer')
Run Code Online (Sandbox Code Playgroud)

对于第二个问题,within块可以使用与上面相同的css选择器:

within('div#first.drawer') do
Run Code Online (Sandbox Code Playgroud)

或者,如果你真的喜欢xpath,你可以这样做:

within("//div[@id='first' and @class='drawer']") do
Run Code Online (Sandbox Code Playgroud)

css选择器的一个很好的参考:http://www.w3.org/TR/CSS2/selector.html