我正在使用testng.xml文件运行我的selenium测试框架。当我在testng.xml中并行运行测试时(不同的浏览器),传递百分比非常少,即80%但是当我运行testng.xml时,传递百分比高于95.可能有人告诉我为什么它可以是这样吗?
答案 0 :(得分:1)
请在您的代码中进行以下更改,之后您的并发相关问题应该消失。
在BrowserHandler
:
getDriver(String browsername)
内添加WebDriver driver = null
作为第一行(我们现在宣布WebDriver为本地变量)protected WebDriver driver=null;
,而是包含一个线程本地变体:private static ThreadLocal<WebDriver> driver = new ThreadLocal<>()
; public static WebDriver getDriver() {
return driver.get();
}
public static void setDriver(WebDriver localDriver) {
driver.set(localDriver);
}
在BaseClass
:
launch_App()
中,将getDriver(browsername);
更改为setDriver(getDriver(browsername));
afterMethod(ITestResult result)
中,将driver.quit();
更改为getDriver().quit()
。afterMethod(ITestResult result)
中,在语句setDriver(null);
getDriver().quit();
现在完成测试代码,无论何时需要访问webdriver,您应该使用getDriver()
[我假设您的所有测试类都将扩展BaseClass
(这再次扩展{{} 1}})]
要了解有关ThreadLocal的更多信息,请参阅here。