我在谷歌搜索过但没有找到解决方案。有人可以帮助我,因为我能够在java中找到解决方案而不是在C#中找到解决方案。
private static final ThreadLocal < WebDriver > webDriver =
new ThreadLocal < WebDriver > () {
@Override protected WebDriver initialValue() {
return BrowserType.getBrowserType().getInstance();
}
};
答案 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());
与错误的客户端线程相关的线程问题可能有 神秘且难以诊断的错误。使用此包装可以防止 这类错误。建议所有多线程使用 用法。这个类没有任何重要的开销。