16

我正在使用 Cucumber、RSpec、Selenium 和 Rails 进行行为驱动开发,这很艰难(但非常有趣)。

我已经准备好使用 Selenium 进行测试,看到 Firefox 弹出并在我的场景中自动运行很有趣。但我想做的一件事是在某个点暂停或停止执行,这样我就可以检查 Selenium 在某个点看到的内容。

我知道 save_and_open_page 命令,但这只会显示没有格式化的纯 HTML。所以也许有一个 stop_execution 方法或什么东西可以在关闭浏览器的情况下停止 Selenium?

4

7 回答 7

28

安装pry,然后将binding.pry测试放在您希望暂停的地方。完成后,按Ctrl+D或输入exit打开的 REPL 以继续执行。

于 2012-07-12T18:46:53.100 回答
18

要不就:

 visit '/'
 sleep(inspection_time=5)
 visit '/dreamland'
于 2013-10-27T22:54:05.783 回答
1

在要执行的地方使用调试器stop/pause

或者

在 Selenium IDE 中,您可以右键单击命令行,然后可以选择设置/清除开始点stop/pause执行。

于 2012-06-20T10:41:12.493 回答
1

好的,我通过安装 ruby​​-debug19(适用于 Ruby 1.9.3),然后在 Cucumber 步骤中的某处设置断点来使其工作。

http://rails.vandenabee.com/blog/2011/12/21/installing-ruby-debug19-with-ruby-1-dot-9-3-on-rvm/

另一种选择是使用 Capybara-firebug gem,它添加了一个“然后停止并让我调试”步骤,基本上看起来是一样的(我不知道它是否依赖于 ruby​​-debug gems)。

于 2012-06-21T07:02:33.360 回答
0

尝试使用 selenium.sleep(ms) 这将使测试执行等待指定的时间

于 2012-06-20T07:48:40.847 回答
0

所有答案都需要安装新的 gem,甚至设置睡眠,这不是最好的方法。您可以将此行放在步骤中的任何位置:

ask "Continue?"

它将停止执行,直到您输入y(是)

因此,例如,它看起来像这样:

expect(page).to have_button('Submit')
ask "Continue?"
click_button('Submit')
于 2017-08-30T10:38:03.727 回答
0

您可以使用 byebug 来执行此操作,而无需在 rails 5 或更高版本中安装任何 gem。只需byebug在您希望测试暂停的行上键入。

例子:

visit post_url(id: posts(:one).id)
byebug
click_on "...", match: :first

这样做会在新页面加载后但在单击下一步按钮之前暂停测试。如果使用旧版本的 Rails,您可能必须安装byebuggem,但它对于故障排除很有用,我建议无论如何都使用它。

于 2019-04-05T01:44:48.480 回答