【发布时间】:2017-05-26 22:11:44
【问题描述】:
无法并行运行 TC。我设置了在 testng.xml 文件中运行的并行 TC。它打开 4 个浏览器实例,但测试用例失败。看起来它只创建了一个浏览器会话实例(或类似的东西),因此它尝试在一个实例中完成所有 4 个测试。
如何修改我的设置以成功并行运行 TC?
我已通过以下方式设置驱动程序:
package MainSettings;
import Pages.StartPage;
//import TrackReporting.CaptureScreenShotOnFailureListener;
import TrackReporting.LoggingEventListener;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.events.EventFiringWebDriver;
import org.openqa.selenium.support.events.WebDriverEventListener;
import org.testng.annotations.*;
/**
* Created by serhii.kaihorodov on 1/4/2016.
*/
//@Listeners(CaptureScreenShotOnFailureListener.class)
public class Settings {
protected static WebDriver driver;
protected String baseURL = "https://www.ukr.net";
private static final WebDriverEventListener eventListener = new LoggingEventListener();
protected StartPage mainPage;
@BeforeMethod
public void setUp()
{
System.setProperty("webdriver.chrome.driver", "D:\\Programming\\Java Automation\\ukr.net_test_cases-master\\chromedriver.exe");
// driver = new EventFiringWebDriver(new FirefoxDriver()).register(eventListener);
driver = new EventFiringWebDriver(new ChromeDriver()).register(eventListener);
getDriver().get(baseURL);
mainPage = new StartPage();
driver.manage().window().maximize();
}
@AfterMethod
public void tearDown()
{
driver.quit();
}
public static WebDriver getDriver()
{
return driver;
}
}
我的 testng.xml 文件如下:
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="My_auto_test" verbose="2" parallel="methods" thread-count="4">
<test name="ukr.net">
<classes>
<class name="TestCases.TestCases_block_1"/>
</classes>
</test>
</suite>
pom 文件:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>MySel20Proj</groupId>
<artifactId>MySel20Proj</artifactId>
<version>1.0</version>
<dependencies>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>3.3.1</version>
</dependency>
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.9.6</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.9.8</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.20</version>
<configuration>
<parallel>tests</parallel>
<threadCount>4</threadCount>
<suiteXmlFiles>
<suiteXmlFile>KayTC/src/testng.xml</suiteXmlFile>
</suiteXmlFiles>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
</project>
我的几个测试用例是:
package TestCases;
import MainSettings.Settings;
import org.testng.annotations.Test;
import java.io.IOException;
/**
* Created by serhii.kaihorodov on 1/4/2016.
*/
public class TestCases_block_1
{
public class TestCases extends Settings
{
@Test (priority=0)
public void login()
{
mainPage.login("kay444415@ukr.net", "06011988");
}
@Test (priority=0)
public void sinoptik_link_is_present1()
{
mainPage.login("kay444415@ukr.net", "06011988").sinoptik_link_is_present();
}
@Test (priority=0)
public void autosale_link_is_present1()
{
mainPage.login("kay444415@ukr.net", "06011988").autosale_link_is_present();
}
}
【问题讨论】:
-
driver = new EventFiringWebDriver(new ChromeDriver()).register(eventListener);可能会给您带来问题
标签: java maven selenium testing testng