通过使用Pry (也可以使用Rubymine),我尝试调试代码中的某个点(使用binding.pry
)。在调用Capybara的save_screenshot
之后,我无法执行任何与Capybara相关的命令(所有命令都在超时时死亡)。这工作在“调试模式”和其他web驱动程序中,如Poltergeist。
发布于 2017-03-09 22:47:04
我今天花了几个小时试着调试它。我想我找到了问题所在--或者至少找到了解决问题的方法。
我们的网站有几个链接,可以在另一个浏览器窗口中打开内容。由于自动化是相当古老的,在那个时候Selenium还没有一种合适的方法来切换窗口上下文,我们所做的是通过URL visit
打开的页面,这样在任何给定的时间都只有一个窗口打开。
这是可行的,但是当在“调试模式”(例如使用binding.pry
)下运行此测试时,会发生一些奇怪的事情。在对该特定页面执行任何操作之前,我们使用Capybara的save_screenshot
方法截取屏幕截图。在调试时,这将导致损坏的映像,并且任何后续的Capybara方法都将在超时时失败。使用链接打开此页面,并使用Capybara的handle_window
方法处理窗口上下文切换解决了此问题。这仍然是一个谜,为什么它只发生在Capybara wekit上(因为其他web驱动程序工作正常)。我猜也许DOM的结构可能不同。
https://stackoverflow.com/questions/42646277
复制相似问题