我正在使用Cucumber测试Rails中的场景,然后它回来说它找不到要点击的编辑链接。如果我自己去网页,它就在那里。显然我做错了什么,但我看不出来。
如果我在我的场景之前添加@selenium标记,它会在Firefox中执行测试。但是我看到浏览器打开和关闭,除非它需要我的交互(比如确认删除),它会在我看到它正在做什么之前经过。
有没有办法看到它在浏览器中看到的内容并逐步进行?
答案 0 :(得分:8)
要查看特定时间点浏览器中显示的内容,请将此步骤添加到您的方案中:
Then show me the page
您可能无法获得所有样式,这取决于。
你还可以尝试另外一件事:添加一个看起来像这样的步骤:
Then /^I pause for a while$/ do
sleep 30
end
在浏览器中显示该页面时,您应该有30秒的时间查看该页面。
答案 1 :(得分:7)
答案 2 :(得分:2)
我通过实施Cucumber
步骤
Then /^Wait for keypress$/ do
STDIN.getc
end
非常类似于标签解决方案,但噪音较少。这样我就可以随时停止测试执行。
答案 3 :(得分:1)
如果您想查看selenium看到的内容,请在功能中添加以下内容:
@leave_the_window_open
@javascript
Feature: The failing feature you want to click through
(...)
使其成功。您需要在黄瓜加载路径中的某个位置使用以下After
定义:
After('@leave_the_window_open') do |scenario|
if scenario.respond_to?(:status) && scenario.status == :failed
print "Step Failed. Press Return to close browser"
STDIN.getc
end
end
Voilá:现在浏览器窗口保持打开状态,直到您在控制台中按Enter键。你可以点击并查看所有内容。
答案 4 :(得分:0)
为什么不设置屏幕录制工具并针对任何显示网络驱动程序运行它?对我来说似乎是一个很好的低技术解决方案。
答案 5 :(得分:0)
我通常使用ask方法暂停操作,这样我就可以看到发生了什么。一切都暂停,我将使用Firebug来探讨问题。请参阅here以获取允许您使用带有Cucumber的Firebug来查看CSS / JS等的gem。
询问方法示例:
res = ask('Where is that error coming from??')
如果某些内容看起来不正确但会对返回值起作用,您也可以编写请求行来实际结束测试。
另一个选择是使用ruby调试器并检查所有正在运行的内容。 Here是一个SO问题,解释了它的工作原理。
答案 6 :(得分:0)
使用Ruby,您可以添加pry-nav gem - https://github.com/nixme/pry-nav
将以下内容添加到gemfile中: 宝石'撬' 宝石'撬遥' 宝石'pry-nav'
然后将“binding.pry”行添加到您想要中断的步骤定义
然后您可以使用步骤,接下来,从命令行继续执行代码。您还可以获得控制台功能。你可以评估表达式