我希望将我的发现转换为使用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]')
我在这里做错了什么?
答案 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_selector
和have_css
意味着同样的事情,但如果您使用的是css选择器,那么您最好只使用have_css