Capybara,按ID和Class检查HTML元素

时间:2012-12-11 00:36:13

标签: capybara

初学者的两个问题。

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

<div class="drawer" id="first"....>

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

 page.should have_css('div.drawer')
 page.should have_css('div#first')

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

page.should have_selector("div", :class => "drawer", :id => "first")

Q2-是否可以在“内部”水豚方法中添加2个选择器,即我已经看到你可以通过这样做来限制范围:

within("//div[@id='first']") do

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

非常感谢!

1 个答案:

答案 0 :(得分:36)

您可以组合选择器。

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

page.should have_css('div#first.drawer')

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

within('div#first.drawer') do

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

within("//div[@id='first' and @class='drawer']") do

css-selectors的一个很好的参考:http://www.w3.org/TR/CSS2/selector.html