我正在使用带有Selenium webdriver 3.4的testNG。我想同时为不同的浏览器执行测试。
在我的testNG.xml中,我有
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Demo">
<test name="Demo on Chrome">
<parameter name="browser" value="Chrome" />
<classes>
<class name="catalogueMemberPortal.CatalogueTest"/>
</classes>
</test>
<test name="Demo on Firefox">
<parameter name="browser" value="Firefox" />
<classes>
<class name="catalogueMemberPortal.CatalogueTest"/>
</classes>
</test>
</suite>
我的代码
public class BaseClass {
public static WebDriver driver;
public WebDriver getDriver() {
return driver;
}
@BeforeSuite
@Parameters({"browser"})
public void launchBrowser(String browser) throws Exception {
if (browser.equalsIgnoreCase("Firefox")){
String ffDriverPath = ((System.getProperty("user.dir")+"/browser_drivers/firefox/geckodriver.exe")) ;
System.setProperty("webdriver.gecko.driver",ffDriverPath);
driver = new FirefoxDriver();
logger.info("Firefox Initialized");
}
// same goes for other type of browsers
@AfterSuite
public void afterSuite() {
driver.close();
driver.quit();
}
}
我收到错误
org.testng.TestNGException: 参数&#39;浏览器&#39; BeforeSuite在方法launchBrowser上是必需的,但尚未标记为@Optional或已定义 在C:\ testng.xml
中
答案 0 :(得分:0)
您的浏览器参数位于<test>
节点,而不是<suite>
节点。
在套件级别,参数不存在。
只需将@BeforeSuite
和@AfterSuite
替换为@BeforeTest
和@AfterTest
。