【发布时间】:2018-03-21 07:59:04
【问题描述】:
我可以运行多个 Chrome 浏览器会话 没有 @BeforeSuite 注释,但有时我需要在转到 @BeforeSuite 之前分配一些变量或在 @BeforeClass 和 @BeforeTest 中执行某些操作,并且同时我需要并行启动多个浏览器会话。我怎样才能做到这一点 ?
这是我的代码的简化示例,我使用 @BeforeSuite 分配一些变量,然后从 TestNG.xml 调用 2 个并行测试。它只会调用 1 个测试(而不是 2 个)。
但是,如果我不使用 @BeforeSuite ,它将完全正常工作(2 个测试将并行运行)。
是否可以在运行并行测试的同时仍然使用 @BeforeSuite ?有时我们确实需要在某些测试场景中使用@BeforeSuite 并调用多个浏览器会话。
谢谢。
public class MyClass {
String baseURL;
String browser;
@BeforeSuite
private void setTheVariables() {
//Some codes here
//Some codes here
this.browser = "chrome";
}
@BeforeClass
private void myBeforeClass() {
//Some codes here
//Some codes here
}
@BeforeTest
private void myBeforeClass() {
//Some codes here
//Some codes here
}
@Test
@Parameters("baseURL")
public void f(String baseURL) {
if (this.browser == "chrome") {
System.setProperty("webdriver.chrome.driver", "C:\\\\Selenium\\\\chromedriver.exe");
DesiredCapabilities caps = DesiredCapabilities.chrome();
LoggingPreferences logPrefs = new LoggingPreferences();
logPrefs.enable(LogType.BROWSER, Level.ALL);
caps.setCapability(CapabilityType.LOGGING_PREFS, logPrefs);
WebDriver driver = new ChromeDriver(caps);
System.out.println("I am going to " + baseURL);
driver.get(baseURL);
}
}
}
这是我的testNG.xml 文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="TestSuite" parallel="tests" thread-count="2">
<test name="Test1" preserve-order="true">
<parameter name="baseURL" value="http://www.amazon.com" />
<classes>
<class name="package.myClass" />
</classes>
</test>
<test name="Test2" preserve-order="true">
<parameter name="baseURL" value="http://www.google.com" />
<classes>
<class name="package.myClass" />
</classes>
</test>
</suite>
【问题讨论】:
标签: java selenium selenium-webdriver testng