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

最新文章

  1. Sybase 出错解决步骤
  2. PHP的排序算法跟查找算法
  3. Laravel框架数据库CURD操作、连贯操作使用方法
  4. cmd获取系统时间
  5. 小甲鱼PE详解之区块表(节表)和区块(节)续(PE详解05)
  6. Yii2.0 多文件上传
  7. QQ群聊天记录文件分割
  8. store procedure 翻页
  9. 带缓冲的IO和不带缓冲的IO
  10. 【转】RTSP协议学习笔记
  11. 在Android开发中,定时器一般有以下3种实现方法
  12. windows Git安装
  13. 台达PLC实现远程下载程序
  14. 根据token分割字串
  15. FB面经Prepare: Merge K sorted Array
  16. windows下使用Play框架
  17. leetcode insertionSortList 对链表进行插入排序
  18. Spring Boot之logback日志最佳实践
  19. DevExpress09、SimpleButton、CheckButton、DropDownButton、HScrollBar控件和VScrollBar控件
  20. BZOJ.2212.[POI2011]Tree Rotations(线段树合并)

热门文章

  1. LindAgile~缓存拦截器支持类的虚方法了
  2. JS中比较的数值如何比较大小
  3. marquee标签(跑马灯)
  4. 遍历List集合的方式
  5. springboot+shiro+cas实现单点登录之shiro端搭建
  6. Python 之excle的读写
  7. codeforce Gym 100500F Door Lock (二分)
  8. [课堂总结]C++课堂总结(二)
  9. Bootstrap历练实例:默认的媒体对象
  10. Js笔记 14