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

如何在c#中使webdriver线程安全?,c#,multithreading,selenium,selenium-webdriver,C#,Multithreading,Selenium,Selenium Webdriver,我在谷歌上搜索过,但没有找到解决方案。有人能帮我吗?因为我能用java找到解决方案,但不能用C private static final ThreadLocalWebDriver= 新的ThreadLocal(){ @重写受保护的WebDriver initialValue(){ 返回BrowserType.getBrowserType().getInstance(); } }; 使用C#之类的语言 public static ThreadLocal<IWebDriver> webD

我在谷歌上搜索过,但没有找到解决方案。有人能帮我吗?因为我能用java找到解决方案,但不能用C

private static final ThreadLocalWebDriver=
新的ThreadLocal(){
@重写受保护的WebDriver initialValue(){
返回BrowserType.getBrowserType().getInstance();
}
};
使用C#之类的语言

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

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

Selenium的线程安全性从未得到保证,严格来说它不是线程安全的。请参阅Java解决方案:

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

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


Selenium
的角度来看,这如何保证线程安全?您能解释一下吗?MSDN声明:“除Dispose外,
ThreadLocal
的所有公共和受保护成员都是线程安全的,并且可以从多个线程同时使用。为value和
IsValueCreated
属性返回的值特定于访问该属性的线程。”非常感谢buhake sindhi,我也实施了相同的方法,使用您的解决方案,我们已经验证了这是如何实现的。@Amit Kapoor如果这个解决方案对您有效,请不要忘记接受这个答案(在这个答案的分数下打勾)。:-)嗨,Erki,谢谢你的评论,但我需要知道c中存在一个解决方案。Erki你的解决方案对java很好,之前我在java中使用上述代码,但现在我知道有ThreadGuard类,非常感谢。是的,我知道问题被标记为c,仅供参考。嗨,Saifur,感谢您的评论,但仍然建议提供一个线程到一个版本的webdriver,我可以给你一个场景,在这个场景中,如果我的脚本没有完成,那么当我的第二个scriot启动时,它将创建一个新实例,这是可以避免的,所以为什么不引用我已经在使用的线程。你能在没有threadsafe的情况下执行并行测试吗?如果是,请告诉我如何执行。
public static ThreadLocal<IWebDriver> webDriver =
    new ThreadLocal<WebDriver>(() =>
    {
        return new InternetExplorerDriver();
    });
using OpenQA.Selenium;
using OpenQA.Selenium.IE;
WebDriver driver = ThreadGuard.protect(new FirefoxDriver());