使用have_selector的多个选择器

时间:2016-10-28 13:21:08

标签: capybara capybara-webkit

我希望将我的发现转换为使用have_selector。目前我的工作如下:

expect(find('div[some-attr=true]'))['some-data-attr']).to eq('Hello World')

我希望将其转换为使用have_selector并尝试:

expect(page).to have_selector('div[some-attr=true][some-data-attr]')

我在这里做错了什么?

1 个答案:

答案 0 :(得分:1)

这应该是

expect(page).to have_css('div[some-attr=true][some-data-attr="Hello World"]')

仅当'some-data-attr'实际上不是自页面加载以来已修改的属性时,这才有效。选择器匹配属性值,但由于您的原始方法在返回的元素上调用#[],因此它可能已访问具有更改值的属性。在不知道这些属性名称究竟是什么以及它们如何被使用的情况下,我们无法肯定地说出来。如果它实际上是一个属性,你需要在你的应用程序中大量使用它,你可以在:css选择器上编写自定义过滤器

如果Capybara.default_selector ==:css,那么have_selectorhave_css意味着同样的事情,但如果您使用的是css选择器,那么您最好只使用have_css