ruby-on-rails - Webrat 说它找不到一些文本,但文本实际上在那里

标签 ruby-on-rails testing cucumber webrat

我有一个网页,上面有一个名为“删除”的表单按钮,以及一个包含以下行的 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/

相关文章:

ruby-on-rails - cucumber 加载错误 activesupport

rest - 如何在 Postman 测试中读取环境变量?

csv - CSV规范的测试套件?

ruby - 针对多个环境运行 cucumber 场景?

ruby-on-rails - capybara 无法识别ajax加载的元素。?

javascript - 按照 jest docs 模拟 axios 但不工作

css - 选择 <option></option> 标签内的内容

ruby-on-rails - Rails 默认为定义的值

ruby-on-rails - 如何在 Ruby on Rails 中基于每个操作禁用日志记录?

ruby-on-rails - 为什么 Rails 中的语言环境设置是全局的(使用 Thin 时)?