<suite name="TestSuite" thread-count="2" parallel="tests" >
<test name="ChromeTest">
<parameter name="browser" value="Chrome" />
<classes>
<class name="test.login"/>
<class name="test.main"/>
<class name="test.logout"/>
</classes>
</test>
<test name="FirefoxTest">
<parameter name="browser" value="Firefox" />
<classes>
<class name="test.login"/>
<class name="test.main"/>
<class name="test.logout"/>
</classes>
</test>
但是当我运行test时,两个浏览器实例都打开了(Chrome首先打开并开始执行,延迟后Firefox打开)。在这种情况下,驱动程序对象被Firefox驱动程序覆盖,chrome停止执行。测试继续在Firefox上执行并成功完成。
项目的结构是这样的:
当我在xml文件上设置parallel为none时,测试将得到有效运行
<suite name="TestSuite" thread-count="2" parallel="none" >
我如何克服这个问题?如何在没有此问题的情况下并行运行测试?
driverbase类如下所示:
public class driverbase {
private String baseUrl;
private String nodeUrl;
private boolean acceptNextAlert = true;
private StringBuffer verificationErrors = new StringBuffer();
public static WebDriver driver = null;
/**
* This function will execute before each Test tag in testng.xml
* @param browser
* @throws Exception
*/
@BeforeSuite
@Parameters("browser")
public WebDriver setup(String browser) throws Exception{
//Check if parameter passed from TestNG is 'firefox'
if(browser.equalsIgnoreCase("firefox")){
System.out.println("Browser : "+browser);
FirefoxProfile profile = new FirefoxProfile();
profile.setAcceptUntrustedCertificates(true);
//create firefox instance
driver = new FirefoxDriver(profile);
}
//Check if parameter passed as 'chrome'
else if(browser.equalsIgnoreCase("chrome")){
System.out.println("Browser : "+browser);
//set path to chromedriver.exe You may need to download it from http://code.google.com/p/selenium/wiki/ChromeDriver
System.setProperty("webdriver.chrome.driver","C:\\chromedriver.exe");
ChromeOptions options = new ChromeOptions();
options.addArguments("--test-type");
//create chrome instance
driver = new ChromeDriver(options);
}
else{
//If no browser passed throw exception
System.out.println("Browser is incorrect");
throw new Exception("Browser is not correct");
}
driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
driver.manage().window().maximize();
return driver;
}
谢谢你的帮助:)
@beforeSuite
方法不应该返回某些内容。=>替换为void
@beforeSuite
总是按您的注释显示您不期望的套件运行一次。=>替换为@beforeTest
您可以尝试以下方法:
public class driverbase {
private String baseUrl;
private String nodeUrl;
private boolean acceptNextAlert = true;
private StringBuffer verificationErrors = new StringBuffer();
public WebDriver driver;
@BeforeTest
@Parameters("browser")
public void setup(String browser) throws Exception {
if(browser.equalsIgnoreCase("firefox")) {
FirefoxProfile profile = new FirefoxProfile();
profile.setAcceptUntrustedCertificates(true);
driver = new FirefoxDriver(profile);
} else if(browser.equalsIgnoreCase("chrome")) {
System.setProperty("webdriver.chrome.driver","C:\\chromedriver.exe");
ChromeOptions options = new ChromeOptions();
options.addArguments("--test-type");
driver = new ChromeDriver(options);
} else {
throw new Exception("Browser is not correct");
}
driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
driver.manage().window().maximize();
}
你也应该看看http://fluentlenium.org/。
在通过Saucelabs跨浏览器执行selenium java测试时,我需要一些帮助来解决这个问题。我正在Jenkins作业中选择的两个浏览器上运行一个测试。 当一个测试通过执行时,另一个测试(类似)失败,出现错误: 似乎一个测试中断了另一个测试。这两个测试都在各自的通道和线程下运行。 共享代码: 扩展的Remote teTestBase类: suite.xml文件: 项目信息:java、sele
问题内容: 我试图覆盖Python类的方法,因为我想每次实例属性更改其值时都调用另一个函数。但是,我不希望该方法出现此行为,因为在此初始化期间,我设置了一些稍后将要使用的属性: 到目前为止,我有此解决方案,而不必在运行时重写: 但是,我想避免这些,并在方法末尾进行覆盖: 我尝试了和,但是这些尝试都没有效果。我已经阅读了数据模型参考的这一部分,但是看起来自己的分配有些棘手。 如何可能在的末尾进行覆盖
类TestParallel.FirstTestClass线程ID:22名称:TestNG 类TestParallel.SecondTestClass线程ID:23名称:TestNG 类TestParallel.TestSetup线程ID:23名称:TestNG java.lang.NullPoInterException位于TestParallel.TestSetup.OnTestFailure(
我试图用TestNG并行运行一个示例测试项目。但它是在一个线程中顺序执行的。我漏掉什么了吗? 谢了。
为了减少测试的运行时间,我希望并行运行测试。我有几个不能并行运行的类。 假设我有两种类型的类:-并行类-包含类1,类2-不并行类-包含类3,类4我想并行运行类1和类2到类3和类4(但lass3不会并行运行到类4) 我试图这样做: 我并行运行这两个测试,但只有第一个测试具有类的并行性。 如果我可以选择添加parallel=“classes”进行测试,我尝试在TestNG文档中搜索。我看不到,但它正在
我目前正在尝试使用Cucumber实现并行测试运行。我设法使用万无一失的插件同时运行了两个不同的运行程序。现在我想检查是否可以并行运行SingleRunner文件多次。 我有一个签名测试。所以我需要在几个平台上并行运行。有可能吗? 这是我的跑步者档案 无跑道进近 工厂级 `导入org . open QA . selenium . web driver; ` 阶梯班 导入org.openqa.sel