如何在c#中制作webdriver线程安全?

时间:2015-06-26 12:50:18

标签: c# multithreading selenium selenium-webdriver

我在谷歌搜索过但没有找到解决方案。有人可以帮助我,因为我能够在java中找到解决方案而不是在C#中找到解决方案。

private static final ThreadLocal < WebDriver > webDriver = 
    new ThreadLocal < WebDriver > () {
        @Override protected WebDriver initialValue() {
            return BrowserType.getBrowserType().getInstance();
        }
};

3 个答案:

答案 0 :(得分:4)

使用C#ThreadLocal,是这样的吗?

public static ThreadLocal<IWebDriver> webDriver =
    new ThreadLocal<WebDriver>(() =>
    {
        return new InternetExplorerDriver();
    });

希望你有正确的进口:

using OpenQA.Selenium;
using OpenQA.Selenium.IE;

注意,除非需要,否则我几乎不用C#编码。

答案 1 :(得分:1)

永远不保证Selenium的线程安全,严格来说,它不是线程安全的。请参阅this

答案 2 :(得分:1)

Java解决方案:

  

多线程客户端代码应该使用它来断言它访问   webdriver以线程安全的方式。将WebDriver实例包装为   如下:

WebDriver driver = ThreadGuard.protect(new FirefoxDriver());
  

与错误的客户端线程相关的线程问题可能有   神秘且难以诊断的错误。使用此包装可以防止   这类错误。建议所有多线程使用   用法。这个类没有任何重要的开销。

Reference