【问题标题】:Webrat says it can't find some text, but the text is actually thereWebrat 说它找不到一些文本,但文本确实存在
【发布时间】:2011-08-31 03:09:24
【问题描述】:

我有一个网页,上面有一个名为“删除”的表单按钮,以及一个包含以下内容的 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 不适合检查表单元素?有不同的方法可以做到这一点吗?谢谢!

【问题讨论】:

  • 首先,我以为您可能使用了带有图像的按钮(可能由于某些框架而不知不觉),但是当您提到输入时,我就让它成为现实。

标签: ruby-on-rails testing cucumber webrat


【解决方案1】:

您可以通过编写自己的步骤定义来检查表单元素。例如,要查找值为“delete”的按钮,请将您的功能写为:

And I should see a button with a value of "delete"

还有一个步骤定义:

Then /^I should see a button with a value of "([^\"]*)"$/ do |value|
  response.should have_selector("form input[value=#{value}]")
end

作为旁注,您会注意到,如果您的自定义步骤失败,它将转储整个响应,然后您将看到表单元素。我不完全确定这是为什么,但是当你写“我应该看到...”时,显然 Cucumber 与表单元素的值不匹配

Webrat 声称在使用 have_selector 语法时支持 CSS3 selectors 匹配 HTML 元素。

【讨论】:

  • 我已经使用了您的解决方案一段时间,效果很好,但我偶然发现它似乎不适用于多个单词值,例如“删除它”,解决方案? tnx.
  • 似乎正则表达式应该与空格一起使用,也许匹配器语法有问题——这将有助于查看您正在使用的实际代码。也许您可以将此作为新问题发布?
【解决方案2】:

致莱昂纳多:

对于带有空格的按钮标签,您需要将value 包含在引号中,如下所示:

Then /^I should see a button with a value of "([^\"]*)"$/ do |value|
  response.should have_selector("form input[value='#{value}']")
end

【讨论】:

    【解决方案3】:

    检查您要测试的 HTML 是否有效

    【讨论】:

      【解决方案4】:

      以防其他人遇到此问题。上面的答案对我不起作用(不知道为什么),但下面的答案对我有用。

      Then /^I should see a button with "([^"]*)"$/ do |button_text|
        if page.respond_to? :should
          page.should have_xpath("//input[contains(@value,'#{button_text}')]")
        else
          assert page.has_xpath?("//input[contains(@value,'#{button_text}')]")
        end
      end
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-07-15
        • 1970-01-01
        • 1970-01-01
        • 2015-06-16
        • 1970-01-01
        相关资源
        最近更新 更多