【发布时间】:2018-03-22 10:12:59
【问题描述】:
我在一个标准的 Cucumber/Capybara 驱动的 Rails 应用程序中使用 Webkit/Chromedriver。
效果很好,当场景在非无头模式下运行时,我可以看到浏览器在做什么。
能够在场景的特定点点击“驱动”镶边对我有很大帮助。为了咯咯笑,我在某个步骤中插入了byebug。此时,byebug 控制台打开,Cucumber/Capybara 明显停止,chrome 坐等我退出 byebug 控制台。
如果我然后单击 chrome 窗口,它会无限期挂起。原因很清楚 => 此时,chrome 向我的被测应用程序发出了一个请求,因为它位于byebug,所以它无法处理该请求。
我必须做些什么才能完成这项工作(如果可能的话)?我熟悉所有这些工作原理的架构(在正常操作中,当 Capybara 或 Webkit 驱动我的 chrome 时)。但是在场景中的某个点停下来并在自己周围单击会非常好,因为这样我可以节省大量时间手动设置测试数据(包括浏览器会话和所有这些)。请注意,byebug 对我来说并不重要,如果我可以在一个步骤中执行一些解决方案,这会使 Cucumber 无限期地等待并将控制权交给我,那就足够了。
【问题讨论】:
-
我经常这样做,诀窍是把 byebug 或 pry 放在测试中。当执行停止时,只有测试进程被阻塞,您可以像往常一样与网站交互,入口点是
current_url -
@phoet:有趣的是,我似乎确实记得它曾经也对我有用,但在过去的几天里,每当我尝试你(和我自己在问题中)描述的内容时,它不再起作用了。
-
每当新版本的 byebug(及其依赖库)发布时,此问题就会不断出现。它通常归结为运行应用程序的线程在 byebug(或 pry)中断测试时暂停。您可以尝试回滚到以前版本的 byebug 和/或在 byebug 提示符处列出线程并恢复运行应用程序的线程。
标签: ruby-on-rails-4 cucumber capybara selenium-chromedriver