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