java - 如何使用 TestNG 并行运行 Selenium?

标签 java selenium selenium-webdriver testng saucelabs

我正在尝试并行运行属于同一类的两个方法。我的代码启动两个单独的浏览器,但是当第一个方法完成时,它不会杀死该特定浏览器,而是杀死另一个浏览器。

方法 A - 浏览器 A - 假设需要 20 秒

方法 B - 浏览器 B - 假设需要 40 秒

当方法 A 完成后,它会杀死浏览器 B 而不是浏览器 A。

这是我的代码:

public class AccountTest {

    private WebDriver driver;

    @BeforeMethod(alwaysRun=true)
    public void initializeDriver() throws MalformedURLException {
        driver = new FirefoxDriver();
        driver.manage().deleteAllCookies();
        driver.manage().window().maximize();
    }

    @Test(groups="Login")
    public void loginTest() {
        HomePage homePage = new HomePage(driver);
        SignInPage signInPage = homePage.signIn();
        signInPage.signIn("test_user0401@fakemail.com", "abcd1234");
    }


    @Test(groups="Register")
    public void registerTest() {
        HomePage homePage = new HomePage(driver);
        SignInPage signInPage = homePage.signIn();
        RegisterPage registerPage = signInPage.register();
        registerPage.register();
    }

    @AfterMethod(alwaysRun=true)
    public void tearDown() {
        driver.quit();
    }
}

这是我的 testng.xml:

<suite name="Automation Suite" parallel="methods" verbose="10">

    <test name="AccountTest">
        <classes>
            <class name="com.selenium.test.AccountTest"/>
        </classes>
    </test>

</suite>

我目前没有使用网格。尝试在我的本地进行这项工作,但我将开始使用 Saucelabs 来运行并行测试。

你知道出了什么问题吗?

提前致谢

最佳答案

TestNG 只会实例化您的类一次。因此,每次运行 @BeforeMethod 方法时,驱动程序字段都会被覆盖。

要更改此设置,您可以并行运行类,也可以设置 @DataProvider 来传入驱动程序。

关于java - 如何使用 TestNG 并行运行 Selenium?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22914332/

相关文章:

java - Selenium - 任何使用 AndroidDriver 的人

php - Selenium 浏览器窗口大小

java - Selenium 3.7.1(Java)和 ChromeDriver 2.33.5

Selenium webdriver Xpath 属性名称中带有点 (.)

selenium-webdriver - 发送 key 后,Selenium WebElement 值为空

java - 使用 FactoryBean 创建泛型实例时,Spring 自动接线无法泛型

java - 在 BigDecimal 中查找有效数字位数的好方法?

Python selenium 将屏幕截图保存在新创建的文件夹中

java - JBoss 4.0.5 启动需要 15 分钟部署单个 war 文件

java - $unwind $push Mongo