我想在不同的浏览器(Firefox、Chrome 和 Safari)上运行相同的测试。为此,我在测试中使用参数化。如果浏览器是 chrome,则在哪里运行 chrome 等等。
在testng.xml
我已经指定并行运行测试并在多个<test>
标签下重复相同的测试。
如果我有这么多测试要运行怎么办。我将在<test>
标签中复制粘贴相同的测试。哪个没有看到最佳解决方案。
我怎样才能解决这个问题?
这是我尝试过的:
public class SameTestDifferentBrowsers {
WebDriver driver;
@BeforeMethod
@Parameters("browser")
public void openBroswer(String browser) {
if (browser.equalsIgnoreCase("Chrome")) {
System.out.println(System.getProperty("user.dir"));
System.setProperty("webdriver.chrome.driver", System.getProperty("user.dir")+"//lib//browsers//chromedriverMac");
driver = new ChromeDriver();
} else if (browser.equalsIgnoreCase("Firefox")) {
driver = new FirefoxDriver();
} else if (browser.equalsIgnoreCase("safari")) {
System.setProperty("webdriver.safari.driver", System.getProperty("user.dir")+"//lib//browsers//SafariDriver.safariextz");
driver = new SafariDriver();
}
}
@AfterMethod
public void closeBrowser() {
driver.quit();
}
@Test
public void login_TestCase() {
driver.get("https://www.google.com");
}
}
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Parallel test suite" parallel="tests">
<test name="Firefox Test">
<parameter name="browser" value="browser"/>
<classes>
<class name="ParallelBrowser.SameTestDifferentBrowsers"/>
</classes>
</test>
<test name="Chrome Test">
<parameter name="browser" value="browser"/>
<classes>
<class name="ParallelBrowser.SameTestDifferentBrowsers"/>
</classes>
</test>
<test name="Safari Test">
<parameter name="browser" value="browser"/>
<classes>
<class name="ParallelBrowser.SameTestDifferentBrowsers"/>
</classes>
</test>
</suite>