我想使用TestNG在不同的浏览器上执行并行测试。 这是我的testng.xml:
<?xml version="1.0" encoding="UTF-8" ?>
<suite name="Parallel Tests" verbose="2" parallel="tests" thread-count="4">
<!--Set test parameters to execute test in Mozilla Firefox browser on Windows platform. -->
<test name="Linux+firefox Test1" parallel="classes" thread-count="2">
<parameter name="platform" value="LINUX"/>
<parameter name="browser" value="firefox"/>
<parameter name="url" value="http://hh.de/"/>
<parameter name="version" value="58.0b7"/>
<classes>
<class name="suchen.Portalsuche"/>
<class name="suchen.HVV"/>
</classes>
</test>
<!-- Set test parameters to execute test in Google Chrome browser on Windows platform. -->
<test name="Linux+chrome Test1" parallel="classes" thread-count="2">
<parameter name="platform" value="LINUX"/>
<parameter name="browser" value="chrome"/>
<parameter name="url" value="http://hh.de/"/>
<parameter name="version" value="62.0.3202.62"/>
<classes>
<class name="suchen.Portalsuche"/>
<class name="suchen.HVV"/>
</classes>
</test>
</suite>
它启动了第一个浏览器(Mozilla Firefox),但它既没有执行这两个测试,也没有启动第二个浏览器(谷歌浏览器)。
这也是我目前用于启动这些浏览器的代码段:
@Parameters({ "platform", "browser", "url", "version" })
@BeforeTest(alwaysRun = true)
public void setup(String platform, String browser, String url, String version) throws MalformedURLException {
DesiredCapabilities caps = new DesiredCapabilities();
caps.setPlatform(org.openqa.selenium.Platform.LINUX);
System.setProperty("java.net.preferIPv4stack", "true");
caps.setCapability("SeleniumTests", "redhat5 && amd64");
if (browser.equalsIgnoreCase("firefox")) {
System.out.println("Executing on Firefox");
String Hub = "http://localhost:4444/wd/hub";
caps = DesiredCapabilities.firefox();
caps.setBrowserName("firefox");
System.setProperty("webdriver.gecko.driver", "/opt/geckodriver.exe");
driver = new RemoteWebDriver(new URL(Hub), caps);
driver.manage().window().maximize();
driver.navigate().to(url);
} else if (browser.equalsIgnoreCase("chrome")) {
System.out.println("Executing on Chrome");
String Hub = "http://localhost:4444/wd/hub";
caps = DesiredCapabilities.chrome();
caps.setBrowserName("chrome");
ChromeOptions options = new ChromeOptions();
System.setProperty("webdriver.chrome.driver", "/opt/chromedriver.exe");
caps.setCapability(ChromeOptions.CAPABILITY, options);
options.addArguments("--start-maximized");
driver = new RemoteWebDriver(new URL(Hub), caps);
driver.navigate().to(url);
}
}
感谢您的帮助。我很感激。
答案 0 :(得分:0)
删除测试代码级别的并行属性,并将套件代码级别的主题计数重置为2。
testNG xml应如下所示:
<?xml version="1.0" encoding="UTF-8" ?>
<suite name="Parallel Tests" verbose="2" parallel="tests" thread-count="2">
<!--Set test parameters to execute test in Mozilla Firefox browser on Windows platform. -->
<test name="Linux+firefox Test1" >
<parameter name="platform" value="LINUX"/>
<parameter name="browser" value="firefox"/>
<parameter name="url" value="http://hh.de/"/>
<parameter name="version" value="58.0b7"/>
<classes>
<class name="suchen.Portalsuche"/>
<class name="suchen.HVV"/>
</classes>
</test>
<!-- Set test parameters to execute test in Google Chrome browser on Windows platform. -->
<test name="Linux+chrome Test2" >
<parameter name="platform" value="LINUX"/>
<parameter name="browser" value="chrome"/>
<parameter name="url" value="http://hh.de/"/>
<parameter name="version" value="62.0.3202.62"/>
<classes>
<class name="suchen.Portalsuche"/>
<class name="suchen.HVV"/>
</classes>
</test>
</suite>