【发布时间】:2016-01-21 11:54:49
【问题描述】:
我有一个使用 selenium chrome 驱动程序运行 Capybara 的 ruby 脚本。 测试浏览一个网站,在未知时间会出现需要关闭的通知。
在脚本继续执行测试时,是否可以有第二个线程轮询驱动程序以检查通知是否存在。
我尝试了几种不同的方法,但我收到了诸如 Bad file descriptor (Errno::EBADF) 之类的错误,这似乎是因为会话/驱动程序不是线程安全的。
如果无法做到这一点,我们将不胜感激任何处理此问题的想法。我宁愿没有一段代码在动作之间一直调用,因为我担心随着时间的推移这会导致性能问题。
【问题讨论】:
-
我认为 selenium 有一些“关闭所有警报”标志......但我可能错了。让我检查文档
-
这不是警报,它是一个 html 通知,它是网络应用程序 DOM 的一部分。
-
为什么需要关闭通知?那是测试的一部分还是网站的副作用?如果您将其保持打开状态,该网站会发生什么情况?一般来说,我会尝试解决 UI 的副作用,并且只点击/关心什么是必要的。您最了解您的应用程序,但有时等待并单击不确定的 ui 事件是获得挂起测试套件的好方法。
-
它会导致 flakey 测试。如果没有出现通知,则测试工作正常,但是如果确实出现,则如果无法单击该元素,则测试可能会失败。并且通过大量测试,它可以随机影响任意数量的测试。不幸的是,这不是我投入开发的应用程序,所以我无法改变它的行为。
标签: multithreading selenium capybara selenium-chromedriver