使用Cucumber和Selenium进行测试:我如何才能看到它在浏览器中看到的内容?

时间:2010-11-10 21:05:04

标签: ruby-on-rails selenium cucumber

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

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

有没有办法看到它在浏览器中看到的内容并逐步进行?

7 个答案:

答案 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

see an example here

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”行添加到您想要中断的步骤定义

然后您可以使用步骤,接下来,从命令行继续执行代码。您还可以获得控制台功能。你可以评估表达式