【问题标题】:selenium webdriver C# multithreadingselenium webdriver C# 多线程
【发布时间】:2012-04-22 06:17:05
【问题描述】:

Selenium WebDriver 是否支持多线程?

我正在尝试将它与打开 2-4 的几个窗口一起使用,它看起来像浏览器窗口 (Firefox) 有时会被冻结。

当一个线程启动时:

_driver.FindElement(By.Id(id)).SendKeys("MyMessage");

同时另一个线程尝试获取另一个页面元素状态。

如何处理?

对于从不同线程访问同一页面有什么建议吗?

如何加快 SendKeys 方法,并且在 SendKeys 还没有完成的情况下不允许 selenium 访问页面?

【问题讨论】:

    标签: c# multithreading selenium webdriver


    【解决方案1】:

    根据我的经验,Selenium WebDriver 很好地支持多线程(除非您使用的是 IE)。 从您的代码来看,您似乎在所有线程中使用相同的驱动程序实例 - 确保每个线程都有自己的 WebDriver 实例。

    【讨论】:

    • 如果这没有帮助,请说出原因,而不是简单地投反对票。这是我们所有人的学习过程。
    • 对于它的价值,我正在处理同样的问题。我尝试使用单独的 WebDriver 实例(和/或线程静态字段)来完成这项工作。到目前为止,这种方法已导致 AccessViolations (IE) 和 Selenium 异常 (FF) 源于多线程问题:a) 访问相同的隐式 WebDriver 服务器,或 b) 尝试启动多个 WebDriver 服务器。我认为成功的方法需要实例化一个共享服务器实例并指向每个线程的驱动程序实例,但我还没有解决。
    • 有趣 - 自从我运行多线程 WebDriver 场景以来已经有一段时间了,事情一定发生了变化(这解释了不赞成票)。感谢您的意见,我会做一些挖掘,看看我是否可以让它再次工作。
    • 我也发布了一个相关问题;我已经改变了一些东西,我认为 ThreadLocal 现在主要在做这项工作,但是死 FF 实例有些奇怪,这让我陷入了(并行)循环。 ;)
    • 我一直想为 webdriver 实现心跳功能来处理失效的浏览器会话,也许现在是时候...
    猜你喜欢
    • 2023-03-29
    • 2016-06-27
    • 1970-01-01
    • 2011-11-23
    • 2017-11-30
    • 2023-03-14
    • 2014-03-02
    • 1970-01-01
    • 2018-05-29
    相关资源
    最近更新 更多