【问题标题】:Capybara accessing the same session from two threadsCapybara 从两个线程访问同一个会话
【发布时间】: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


【解决方案1】:

这似乎是一个起点,但不是您正在寻找的 100% http://blog.jthoenes.net/2013/08/16/waiting-for-a-javascript-event-with-seleniumcapybara/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-20
    • 1970-01-01
    • 1970-01-01
    • 2015-10-01
    • 2017-06-12
    • 1970-01-01
    • 2021-12-06
    • 2015-08-23
    相关资源
    最近更新 更多