【发布时间】:2017-08-29 22:16:52
【问题描述】:
我计划同时为两个 testng.xml 文件启动 Chrome 浏览器。每个 testng.xml 文件有两个以上的测试。
然后,我将两个 xml 文件合并到一个名为 parentsuite.xml 文件的单个套件文件中。
当 testng1.xml 和 testng2.xml 文件各自只有测试方法时,会启动两个 chrome 浏览器。但是如果 testng1.xml 文件有超过 1 个测试手段,则只有在 testng1.xml 文件执行完成后才会启动第二个 chrome 浏览器。
请看下面的例子。
testng1.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Parallel suite 1" >
<test name="Browser Setup">
<parameter name="browser" value="Chrome" />
<classes>
<class name="com.simpletest.LaunchBrowser"/>
</classes>
</test>
<test name="ApplicationSignin">
<paramater name = "username" value="xxxx"/>
<parameter name="pwd" value="1111"/>
<classes>
<class name="com.simpletest.Signin"/>
</classes>
</test>
</suite>
testng2.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Parallel suite 2" >
<test name="Browser Setup">
<parameter name="browser" value="Chrome" />
<classes>
<class name="com.simpletest.LaunchBrowser"/>
</classes>
</test>
<test name="Application Signin">
<paramater name = "username" value="yyyy"/>
<parameter name="pwd" value="2222"/>
<classes>
<class name="com.simpletest.Signin"/>
</classes>
</test>
</suite>
启动浏览器的示例代码
public class LaunchBrowser
{
@Test
@Parameters("browser")
public void startBrowser(String browser)
{
switch(browser)
{
case "Chrome":
desCapabilities = DesiredCapabilities.chrome();
desCapabilities.setPlatform(Platform.ANY);
desCapabilities.setBrowserName(DriverConstants.CHROME_BROWSER);
System.setProperty("webdriver.chrome.driver", chromeDriverPath);
driver = new ChromeDriver();
driver.manage().window().maximize();
System.out.println("For Browser : " + browser);
break;
case "Firefox":
desCapabilities = DesiredCapabilities.firefox();
desCapabilities.setPlatform(Platform.ANY);
desCapabilities.setBrowserName(DriverConstants.FIREFOX_BROWSER);
driver = new FirefoxDriver();
driver.manage().window().maximize();
System.out.println("For Browser : " + browser);
break;
default :
System.out.println("Brower choice not available");
}
}
parentsuite.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Selenium Test Suite" thread-count="2" preserve-order="true">
<suite-files>
<suite-file path="testng1.xml" />
<suite-file path="testng2.xml" />
</suite-files>
</suite>
注意:如何在不使用网格概念的情况下解决此问题。请帮我解决这个问题。
【问题讨论】:
-
可能是因为在第二次测试中缺少名为 browser 的参数。请在第二次测试中添加浏览器参数再试一次。
-
请给我们看一下浏览器实例化代码sn-p。我猜测问题仅在于那部分。
-
在第一个测试方法中,应该启动浏览器,在第二个测试方法中,我需要执行一些其他操作,例如:导航到 stackoverflow.com。所以无需再次打开浏览器。
-
@MohanKumar - 您的浏览器实例化代码在
@Test方法中。所以我不太确定你想做什么。您能帮忙为您的代码添加更多上下文吗?如果您能帮助为您的两个类添加完整的代码 sn-p 那就太好了(您可以消除所有复杂性,只需将其缩减为 webdriver 的实例化和加载 url) -
@KrishnanMahadevan - 我已经更新了代码,如果有任何其他问题,请告诉我们。
标签: xml selenium selenium-webdriver testng selenium-chromedriver