使用Capybara Webkit时在调试时执行Capybara命令?

时间:2017-03-07 10:50:08

标签: capybara-webkit

使用Pry(还有Rubymine),我试图调试代码中的某个点(使用save_screenshot)。在致电Capybara {{1}}后,我无法执行任何与Capybara相关的命令(所有命令都会在超时时死亡)。这是一个"调试模式"以及像Poltergeist这样的其他网络驱动程序。

1 个答案:

答案 0 :(得分:0)

我今天花了几个小时试图调试它。我想我发现了问题 - 或者至少是一种方法。

我们的网站有几个链接可以在另一个浏览器窗口中打开内容。由于自动化非常古老,并且在那个时候Selenium没有一个合适的方式来切换窗口上下文,我们所做的是通过URL visit打开的页面,并且这样只保留一个窗口在任何给定时间打开。

这很有效,但在"调试模式"上运行此测试时会发生一些奇怪的事情。 (例如,使用binding.pry)。在我们对该特定页面执行任何操作之前,我们使用Capybara的save_screenshot方法进行屏幕截图。在调试时,这会导致图像损坏,并且任何后续的Capybara方法都会在超时时失败。使用链接打开此页面,并使用Capybara的handle_window方法处理窗口上下文切换解决了这个问题。它仍然是一个谜,为什么它只发生在Capybara wekit(因为其他网络驱动程序正常工作)。我猜测也许DOM的结构可能不同。