Ruby on rails 使用Cucumber和Selenium进行测试:如何查看浏览器中的内容?

Ruby on rails 使用Cucumber和Selenium进行测试:如何查看浏览器中的内容?,ruby-on-rails,selenium,cucumber,Ruby On Rails,Selenium,Cucumber,我正在用Cucumber在Rails中测试一个场景,结果显示它找不到要单击的编辑链接。如果我自己去那一页,它就在那里。显然我做错了什么,但我看不出来 如果在我的场景之前添加@selenium标记,它将在Firefox中执行测试。但如果我看到浏览器打开和关闭,除非它需要我的交互(比如确认删除),否则它会在我看到它在做什么之前经过 是否有办法查看浏览器中显示的内容并逐步执行?要查看特定时间点浏览器中显示的内容,请将此步骤添加到场景中: Then show me the page 你可能没有得到所有

我正在用Cucumber在Rails中测试一个场景,结果显示它找不到要单击的编辑链接。如果我自己去那一页,它就在那里。显然我做错了什么,但我看不出来

如果在我的场景之前添加@selenium标记,它将在Firefox中执行测试。但如果我看到浏览器打开和关闭,除非它需要我的交互(比如确认删除),否则它会在我看到它在做什么之前经过


是否有办法查看浏览器中显示的内容并逐步执行?

要查看特定时间点浏览器中显示的内容,请将此步骤添加到场景中:

Then show me the page
你可能没有得到所有的样式,这取决于

您还可以尝试另一件事:添加一个类似以下内容的步骤:

Then /^I pause for a while$/ do
  sleep 30
end

当页面显示在浏览器中时,您应该有30秒的时间来查看页面。

检查此页面:

为什么不设置屏幕录制工具,并针对任何显示web驱动程序运行它?对我来说,这似乎是一个很好的低技术解决方案。

当您想要查看selenium所看到的内容时,请在您的功能中添加以下内容:

@leave_the_window_open
@javascript
Feature: The failing feature you want to click through
(...)
让它工作。在加载路径中的某个位置,您需要以下
后的
定义:

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


沃拉:现在浏览器窗口保持打开状态,直到你在控制台中点击回车键。您可以点击查看所有内容。

我通常使用ask方法暂停操作,以便查看发生了什么。当一切都暂停时,我将使用Firebug来探索这个问题。请参阅以获得一个gem,该gem允许您将Firebug与Cucumber一起使用来查看CSS/JS等

ask方法示例:

res = ask('Where is that error coming from??')
您还可以编写ask行,以便在某些内容看起来不正确但作用于返回值时实际结束测试


另一个选项是使用ruby调试器并检查所有正在运行的东西。这是一个很难解释的问题。

我通过实现
cumber
步骤解决了这个问题

Then /^Wait for keypress$/ do
  STDIN.getc 
end

与标签解决方案非常相似,但噪音更小。通过这种方式,我可以随时停止测试执行

使用Ruby,您可以添加pry导航宝石-

将以下内容添加到您的文件中: 宝石“窥探” 宝石“撬动遥控器” 宝石“撬动导航”

然后将行“binding.pry”添加到步骤定义中,您要在其中打断


然后您可以使用步骤,下一步,从命令行继续,逐步完成代码。您还可以使用控制台功能,例如,您可以计算表达式

这两种功能的结合非常好!非常感谢。