我在Eclipse中创建了Project(Page Object Model),就像这样
项目名称 套餐1 SRC 箱子 包2 SRC 仓
包1中包含元素描述和方法 在包2中包含,
BaseScript.java --------- preconditon
webdriver driver=new FirefoxDriver();
driver.get("url");
driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS);
driver.manage().window().maximize();
LoginPage l=new LoginPage(driver);
l.setusername("");
l.setpassword("");
l.LoginBut();
Postconditons
driver.quit();
我有T1.java,T2.java并转换为.xml(testng.xml)并使用Testng运行该文件(testng.xml)
我想用一个浏览器一次执行所有测试用例但是当我执行测试用例时它已经得到了它的调用BaseScript.java
答案 0 :(得分:1)
Selenium
是一个像用户一样控制浏览器/网站的工具。它模拟用户点击页面。了解Web应用程序的功能后,您可以设置测试。现在运行一组测试用例,即Test Suite。 TestNG
提供了管理测试执行的功能。
我建议你阅读这个简单的tutorial来设置TestNG测试套件。
我想一次执行所有测试用程序
Selenium Grid是Selenium Suite的一部分,可以并行运行测试。您在基类中设置驱动程序
public class TestBase {
protected ThreadLocal<RemoteWebDriver> threadDriver = null;
@BeforeMethod
public void setUp() throws MalformedURLException {
threadDriver = new ThreadLocal<RemoteWebDriver>();
DesiredCapabilities dc = new DesiredCapabilities();
FirefoxProfile fp = new FirefoxProfile();
dc.setCapability(FirefoxDriver.PROFILE, fp);
dc.setBrowserName(DesiredCapabilities.firefox().getBrowserName());
threadDriver.set(new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"), dc));
}
public WebDriver getDriver() {
return threadDriver.get();
}
@AfterMethod
public void closeBrowser() {
getDriver().quit();
}
}
样本测试的一个例子是:
public class Test01 extends TestBase {
@Test
public void testLink()throws Exception {
getDriver().get("http://facebook.com");
WebElement textBox = getDriver().findElement(By.xpath("//input[@value='Name']"));
// test goes here
}
}
您可以采用与上述类似的方式添加更多测试
public class Test02 extends TestBase {
@Test
public void testLink()throws Exception {
// test goes here
}
}
TestNG配置:
<强> 的testng.xml 强>
<suite name="My Test Suite">
<suite-files>
<suite-file path="./testFiles.xml" />
</suite-files>
<强> testFiles.xml 强>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Parallel test runs" parallel="tests" thread-count="2">
<test name="T_01">
<classes>
<class name="com.package.name.Test01" ></class>
</classes>
</test>
<test name="T_02">
<classes>
<class name="com.package.name.Test02" ></class>
</classes>
</test>
<!-- more tests -->
</suite>