首页 > 解决方案 > 浏览器退出和线程的黄瓜并行执行问题

问题描述

我正在尝试升级黄瓜以使用 TestNg 的并行执行。但是我面临浏览器退出的问题。

我在 pom.xml 中将浏览器实例设置为 3,如下所示

                            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.22.0</version>
            <configuration>
                <properties>
                    <property>
                        <name>dataproviderthreadcount</name>
                        <value>3</value>
                    </property>
                </properties>
            </configuration>

1) 执行后有时我会看到 1 或 2 个浏览器没有退出。虽然它正在钩子中执行退出方法(如下代码所示)。

2) 其他问题是针对 3 个场景,我在开始时打印线程 ID

System.out.println("Start Thread ID:" + Thread.currentThread().getId());

然而,我看到线程 ID 仅打印了 2 个实例,尽管它在 3 个不同的浏览器中执行所有 3 个场景。但是对于钩子中的退出浏览器代码,我看到为所有 3 个浏览器打印了线程 ID。

钩子有以下代码:

@After(order = 2)
public void takeScreenShot(Scenario scenario) {
    byte[] screenshot = ((TakesScreenshot) util.driver).getScreenshotAs(OutputType.BYTES);
    scenario.embed(screenshot, "image/png");
}

@After(order = 1)
public void createTestRun(Scenario scenario) {
  <Some piece of code>
}

@After(order = 0)
public void validate(Scenario scenario) {
    if (!scenario.isFailed()) {
        LOGGER.info("Log something");
    } else {
        LOGGER.error("Test Failed");
        if (world.orderType != null) {
            SupportMethods.printErrors();
        }
    }
    System.out.println("QUIT Thread ID:" + Thread.currentThread().getId()); // I see this ID is being called every time
    util.driver.quit(); 
}

util 类具有以下代码:

public class util {
    public static WebDriver driver;   
<some piece of code> 
}

在 webdriver 代码中,我将 chrome 实例分配给这个 util 类驱动程序

util.driver = new ChromeDriver(options);

标签: cucumbercucumber-jvm

解决方案


推荐阅读