如何测试元素不存在?我尝试了以下但得到错误textarea#Question1Text does not exist
而不是通过测试。
it "should not have question 1" do
find('textarea#Question1Text').should_not be
end
it { should_not find('textarea#Question1Text') }
您可以使用其中一个 capybara 匹配器(特别是have_css
)来测试元素是否存在。
it 'should not have question1' do
page.should_not have_css('textarea#Question1Text')
end
建议执行此操作的方法的问题是,如果例如在单击按钮后隐藏字段时,它们将具有竞争条件。在这种情况下,它会在单击按钮之后但在 javascript 有机会找到它之前抓取页面,因此您的测试可能会失败。它往往是间歇性的,主要发生在像 phantomjs 这样的快速无头浏览器上。
相反,我建议你使用类似的东西:
expect(page).to have_selector("#id_of_element")
这将等到条件为真,但如果失败仍会很快超时。
十分简单
expect{page.find_by_id("update-#{term1.id}").should}.not_to raise_error
expect{page.find_by_id("update-#{term4.id}")}.to raise_error
如果您没有唯一的 ID,那么 spullen 建议的 Css 将起作用