我正在努力(但非常有趣的时候)使用Cucumber,RSpec,Selenium和Rails进入行为驱动开发。
我已准备好使用Selenium进行测试,看看Firefox弹出并在我的场景中自动运行会很有趣。但我想做的一件事是暂停或停止执行某一点,所以我可以检查Selenium在某一点看到的内容。
我知道save_and_open_page命令,但这只显示了没有格式化的纯HTML。那么也许有一种stop_execution方法可以阻止Selenium 而不用关闭浏览器?
答案 0 :(得分:26)
安装pry,然后将binding.pry
放入您希望暂停的测试中。完成后,按 Ctrl + D 或在打开的REPL中键入exit
以继续执行。
答案 1 :(得分:18)
或只是:
visit '/'
sleep(inspection_time=5)
visit '/dreamland'
答案 2 :(得分:1)
使用调试器,执行stop/pause
。
或
在Selenium IDE中,您可以右键单击命令行,然后选择设置/清除起点到stop/pause
执行。
答案 3 :(得分:1)
好的,我通过安装ruby-debug19(用于Ruby 1.9.3),然后在Cucumber步骤中的某处设置断点来实现它。
http://rails.vandenabeele.com/blog/2011/12/21/installing-ruby-debug19-with-ruby-1-dot-9-3-on-rvm/
另一个选择是使用Capybara-firebug gem,它添加了一个“Then stop and let me debug”步骤,它基本上似乎也是这样(我不知道它是否依赖于ruby-debug gems)。 / p>
答案 4 :(得分:1)
所有答案都需要安装新的宝石,甚至设置睡眠,这不是最好的方法。您可以将此行放在您的任何位置:
ask "Continue?"
在您输入y
(是)
所以,例如它看起来像这样:
expect(page).to have_button('Submit')
ask "Continue?"
click_button('Submit')
答案 5 :(得分:1)
您可以使用byebug来执行此操作,而无需在rails 5或更高版本中安装任何gem。只需在要暂停测试的行上键入byebug
。
示例:
visit post_url(id: posts(:one).id)
byebug
click_on "...", match: :first
这样做将在加载新页面之后但在单击下一个按钮之前暂停测试。如果使用旧版本的rails,则可能必须安装byebug
gem,但它对于故障排除很有用,我建议无论如何都要使用它。
答案 6 :(得分:0)
尝试使用selenium.sleep(ms) 这将使测试执行等待指定的时间