selenium2中TestNG相关解释
testNg官网:http://testng.org/doc/documentation-main.html
新建testNG class的时候,同时也新建了一个TestNG.xml的文件。
此xml文件定义了一个测试套件(suite),name属性定义了这个测试套件的名字,这个name会在测试报告中引用。parallel并行执行方式为false,也就是说这个起不了作用。parallel值有多种,可以是classes,tests,methods和false等。TestNG允许以并行,即多线程的方式来执行测试。这就意味着基于TestNG测试组件的配置,多个线程可以被同时启动,然后分别执行各自的测试方法。相对于传统的单线程执行测试的方法,这种多线程方式拥有很大的优势,主要是可以减少测试运行时间,并且可以验证某段代码在多线程环境中运行的正确性。
<test name="Test">
suite中又有一个test,其中name属性是这个测试用例的名字,可以自己定义。
<classes>
<class name="com.demo.test.NewTest"/>
</classes>
定义了要执行测试的类。在Eclipse中选中该文件并且以TestNG测试套件方式运行它。
刷新selenium_tesng_demo项目,你会发现通过配置文件执行的测试会在项目目录下生成一个文件夹:test-ouput这是就是存储报告的目录,我们打开目录下的emailable-report.html文件,如图:
其中Test和Suite这两个名字都尅根据具体功能来命名。
<suite name="Suite" parallel="false">
<test name="Test">
NewTest.java文件代码:
package com.demo.test; import java.util.concurrent.TimeUnit; import org.junit.Assert;
import org.openqa.selenium.By;
import org.openqa.selenium.TimeoutException;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.ExpectedCondition;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test; public class NewTest {
private WebDriver driver; @Test
public void f() {
By inputBox = By.id("kw");
By searchButton = By.id("su"); // 智能等待元素加载完成
intelligentWait(driver, 10, inputBox);
intelligentWait(driver, 10, searchButton); driver.findElement(inputBox).sendKeys("java");
driver.findElement(searchButton).click();
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} @BeforeTest
public void beforeTest() {
driver = new FirefoxDriver();
driver.manage().timeouts().pageLoadTimeout(10, TimeUnit.SECONDS);
driver.manage().window().maximize();
driver.get("https://baidu.com");
} @AfterTest
public void afterTest() {
driver.quit();
} public void intelligentWait(WebDriver driver, int timeOut, final By by) {
try {
(new WebDriverWait(driver, timeOut))
.until(new ExpectedCondition<Boolean>() {
public Boolean apply(WebDriver driver) {
WebElement element = driver.findElement(by);
return element.isDisplayed();
}
});
} catch (TimeoutException e) {
Assert.fail("超时!!" + timeOut + "秒之后还没有找到元素[" + by + "]");
}
}
}
关于TestNG注释的详细解释,可查看:http://www.cnblogs.com/yajing-zh/p/4925155.html
最新文章
- Sybase 出错解决步骤
- PHP的排序算法跟查找算法
- Laravel框架数据库CURD操作、连贯操作使用方法
- cmd获取系统时间
- 小甲鱼PE详解之区块表(节表)和区块(节)续(PE详解05)
- Yii2.0 多文件上传
- QQ群聊天记录文件分割
- store procedure 翻页
- 带缓冲的IO和不带缓冲的IO
- 【转】RTSP协议学习笔记
- 在Android开发中,定时器一般有以下3种实现方法
- windows Git安装
- 台达PLC实现远程下载程序
- 根据token分割字串
- FB面经Prepare: Merge K sorted Array
- windows下使用Play框架
- leetcode insertionSortList 对链表进行插入排序
- Spring Boot之logback日志最佳实践
- DevExpress09、SimpleButton、CheckButton、DropDownButton、HScrollBar控件和VScrollBar控件
- BZOJ.2212.[POI2011]Tree Rotations(线段树合并)