我有一个网页,上面有一个名为“删除”的表单按钮,以及一个包含以下行的 cuke 场景:
And I should see "delete"
当我运行该场景时,出现此错误:
expected the following element's content to include "delete"
...并将 webrat 页面转储到标准输出,而“删除”实际上不存在。到目前为止,一切都很好。但是,当我告诉 webrat 在错误发生之前向我显示页面时:
Then show me the page
And I should see "delete"
...Safari 启动并显示页面,在 Safari 中有“删除”按钮,就在那里。
为什么 webrat 找不到表单按钮?我在表单字段方面也遇到过同样的问题,例如页面加载时其中包含值的文本输入,但 webrat 说那里什么也没有。在 Safari 中查看它再次表明该字段中确实包含正确的文本。
这是一个错误,还是 webrat 不适合检查表单元素?有没有不同的方法来做到这一点?谢谢!
最佳答案
您可以通过编写自己的步骤定义来检查表单元素。例如,要查找值为“删除”的按钮,请将您的功能编写为:
我应该看到一个值为“delete”的按钮
还有一个步骤定义:
Then /^I should see a button with a value of "([^\"]*)"$/ do |value|
response.should have_selector("form input[value=#{value}]")
end
作为旁注,您会注意到,如果您的自定义步骤失败,它将转储整个响应,然后您将看到表单元素。我不完全确定这是为什么,但显然当您写“我应该看到...”时,Cucumber 与表单元素的值不匹配
Webrat声称支持CSS3 selectors用于在使用 have_selector
语法时匹配 HTML 元素。
关于ruby-on-rails - Webrat 说它找不到一些文本,但文本实际上在那里,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2641894/