如何解决如何为类中的每个测试方法启动和使用单独的浏览器
我有以下情况
所有3个测试都在运行,但它们仅共享1个浏览器。在基类中,我具有所有单击等所有通用方法。
我希望每种测试方法-method1 / 2/3都能启动不同的浏览器和工作方式, 有人可以帮忙吗?
Class A extends BaseTest{
@BeforeMethod(){
initDriver();// it does setdriver & getDriver is used across
}
public void doStuff(){
...
}
@Test
public void method1(){
doStuff()
}
@Test
public void method2(){
doStuff()
}
@Test
public void method3(){
doStuff()
}
}
解决方法
您可以使用TestNG.xml来参数化并控制您的执行,如下所示。在这里,我们创建了3个不同的测试,每个测试都使用浏览器类型变量进行参数化,并运行您的@test方法之一。
TestNG.XML
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite">
<test name="TestChrome">
<parameter name="browser" value="chrome"/>
<classes>
<class name ="<Full path to your Test class>" />
<methods>
<include name="method1" />
</methods>
</classes>
</test>
<test name="TestForefox">
<parameter name="browser" value="firefox"/>
<classes>
<class name ="<Full path to your Test class>" />
<methods>
<include name="method2" />
</methods>
</classes>
</test>
<test name="TestIE">
<parameter name="browser" value="edge"/>
<classes>
<class name ="<Full path to your Test class>" />
<methods>
<include name="method3" />
</methods>
</classes>
</test>
</suite>
在@BeforeMethod中获取浏览器类型参数。
@Parameters ({"browser"})
@BeforeMethod(){
initDriver(browser);/* it does setdriver & getDriver is used across. Passing browser name
to initDriver method.*/
}
现在在initDriver()方法中(无论您在何处实现了它),都根据您的浏览器类型设置驱动程序。类似于以下内容:
public void initDriver(String browser) throws Exception{
if(browser.equalsIgnoreCase("firefox")){
System.setProperty("webdriver.gecko.driver",".\\geckodriver.exe");
driver = new FirefoxDriver();
}
else if(browser.equalsIgnoreCase("chrome")){
System.setProperty("webdriver.chrome.driver",".\\chromedriver.exe");
driver = new ChromeDriver();
}
else if(browser.equalsIgnoreCase("Edge")){
System.setProperty("webdriver.edge.driver",".\\MicrosoftWebDriver.exe");
driver = new EdgeDriver();
}
else{
throw new Exception("Browser is not correct");
}
driver.manage().timeouts().implicitlyWait(10,TimeUnit.SECONDS);
driver.window().maximize();
}
注意::使用TestNg.xml文件中的include / exclude标记,您可以运行/忽略测试中的任何@Test方法。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。