Ruby on rails Webrat说它可以';我找不到一些文字,但文字确实在那里
我有一个网页,上面有一个名为“删除”的表单按钮,还有一个cuke场景,其中有一行:Ruby on rails Webrat说它可以';我找不到一些文字,但文字确实在那里,ruby-on-rails,testing,cucumber,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 s
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中查看它再次表明,字段中确实有正确的文本
这是一个bug,还是webrat不适合检查表单元素?有没有其他方法可以做到这一点?谢谢 您可以通过编写自己的步骤定义来检查表单元素。例如,要查找值为“delete”的按钮,请将您的功能写为:
我应该看到一个值为“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_选择器语法时支持匹配HTML元素。检查您测试的HTML是否对Leonardo有效: 对于带有空格的按钮标签,需要在引号中包含
值
,如下所示:
Then /^I should see a button with a value of "([^\"]*)"$/ do |value|
response.should have_selector("form input[value='#{value}']")
end
万一有人碰到这个。上面的答案对我不起作用(不知道为什么),但下面的答案起作用了
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
首先,我想你可能已经使用了图像按钮(可能不是故意的,因为某些框架),但当你提到输入时,我就这么做了。我使用了你的解决方案一段时间,效果很好,但我意外地发现,它似乎不适用于多个词值,如“删除它”,解决方案?似乎regexp应该与空格一起工作,也许matcher语法有问题——这将有助于查看您正在使用的实际代码。也许你可以把这个问题作为一个新问题发布?