java - 使用 TestNG 执行并行测试(Firefox 和 chrome)时面临问题,
问题描述
在执行期间,Web 驱动程序被初始化并且步骤在两个不同的线程中正确执行。
当一个线程完成它的执行时,下一个线程停止它的执行而不抛出任何错误。我没有使用静态变量,请帮助我修复它,我的 xml 看起来像这样..
<test name="chrometest">
<parameter name="browser" value="firefox" />
<classes>
<class name="AutomationEngine.Driver" />
</classes>
</test>
<test name="test2">
<parameter name="browser" value="chrome" />
<classes>
<class name="AutomationEngine.Driver" />
</classes>
</test>
`
Before 方法和 driver.quit 在 after 方法中的驱动程序实例化
公共类 TestBase { 私有 WebDriver 驱动程序;
long firefox, chrome;
@Parameters("browser")
@BeforeTest
public void beforeTest(final String browser) throws Exception
{
if (browser.equals("firefox"))
{
System.setProperty("webdriver.gecko.driver",
"E:\\old laptop\\workspace\\mobile-automation\\TestMyBlood\\References\\geckodriver.exe");
}
else
{
System.setProperty("webdriver.chrome.driver",
"C:\\Users\\divya\\Downloads\\chromedriver_win32\\chromedriver.exe");
}
setUpWebDriver(browser);
}
private synchronized void setUpWebDriver(final String browser)
{
DesiredCapabilities capabilities = browser.equals("firefox") ? DesiredCapabilities.firefox()
: DesiredCapabilities.chrome();
capabilities.setBrowserName(browser);
// capabilities.setPlatform(Platform.WIN10);
driver = browser.equals("firefox") ? new FirefoxDriver(capabilities)
: new ChromeDriver(capabilities);
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
driver.manage().window().maximize();
printer("beforeTest : " + browser);
Thread t = Thread.currentThread();
if (browser.equals("firefox"))
{
firefox = t.getId();
}
else
{
chrome = t.getId();
}
}
@AfterTest
public synchronized void AfterTest() throws Exception
{
if ((Thread.currentThread().getId()) == (chrome))
{
System.out.println("closing driver is chrome");
driver.quit();
}
else
{
System.out.println("closing driver is firefox");
driver.quit();
}
}
public WebDriver getDriver()
{
return driver;
}
protected void printer(final String methodName)
{
final String msg = String.format("%s() is running on Thread id [%d]", methodName,
Thread.currentThread().getId());
System.err.println("[DEBUGGER] :" + methodName);
System.out.println(msg);
}
}
解决方案
推荐阅读
- excel - 错误 91 对象变量...在创建 Excel 应用程序后引用 Excel 时未设置
- python - 如何检查给定的 Vlan id 正在使用中?
- scala - 检查 scalamock 测试中的参数
- tensorflow - 导入张量流时出错:类型对象“TypeSpecProto”没有属性“NDARRAY_SPEC”
- java - Java ProcessBuilder 无法读取 script.py 中的 Poppler_Path
- php - 显示 AJAX 的 WooCommerce 通知添加到购物车功能
- flutter - 如何比较体内数据库中的值并使用三元条件进一步进行
- gradle-plugin - 如何从自定义插件应用特定版本的 gradle 插件
- javascript - 如何使用 ajax 正确地将数据传递给 php?
- c# - 如何在 C# 中更改 CSV 文件中的任何列和行?