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
selenium2中TestNG相关解释的更多相关文章
- 在C#代码中应用Log4Net(三)Log4Net中配置文件的解释
一个完整的配置文件的例子如下所示,这个是”在C#代码中应用Log4Net(二)”中使用的配置文件. <log4net> <!-- 错误日志类--> <logger nam ...
- 在C#代码中应用Log4Net 中配置文件的解释
一个完整的配置文件的例子如下所示,这个是”在C#代码中应用Log4Net(二)”中使用的配置文件. <log4net> <!-- 错误日志类--> <logger nam ...
- 为什么super()和this()调用语句不能同时在一个构造函数中出现的解释
我想这应该是Java构造函数的一种机制吧,首先以子类和父类为例.当你创建一个子类的实例时,首先会调用父类的构造函数,然后再调用子类的构造函数,如果父类中没有缺省构造函数,则必须再子类的构造函数中显示的 ...
- [转]Log4Net中配置文件的解释
FROM:http://www.cnblogs.com/kissazi2/p/3392605.html 一个完整的配置文件的例子如下所示 <log4net> <!-- 错误日志类-- ...
- 【Socket编程】Java中网络相关API的应用
Java中网络相关API的应用 一.InetAddress类 InetAddress类用于标识网络上的硬件资源,表示互联网协议(IP)地址. InetAddress类没有构造方法,所以不能直接new出 ...
- Log4Net中配置文件的解释
一个完整的配置文件的例子如下所示 <log4net> <!-- 错误日志类--> <logger name="logerror"> <le ...
- Selenium2.0+TestNG+Ant+Jenkins自动化测试浅尝
当前常用自动化测试工具 Web自动化测试工具:QTP .selenium等 性能自动化测试工具:loadrunner.jmeter等 接口自动化测试工具:SoapUI.postman等 手机自动化测试 ...
- Spring中AOP相关的API及源码解析
Spring中AOP相关的API及源码解析 本系列文章: 读源码,我们可以从第一行读起 你知道Spring是怎么解析配置类的吗? 配置类为什么要添加@Configuration注解? 谈谈Spring ...
- 理解CSV文件以及ABAP中的相关操作
在很多ABAP开发中,我们使用CSV文件,有时候,关于CSV文件本身的一些问题使人迷惑.它仅仅是一种被逗号分割的文本文档吗? 让我们先来看看接下来可能要处理的几个相关组件的词汇的语义. Separat ...
随机推荐
- nuxt.js实战踩坑记录
读万卷书不如行万里路,必须实践出真理! 看官方文档安装项目vue init nuxt-community/starter-template <project-name>注意:这是新手项目不 ...
- Linux中gzip、bzip2、zip、unzip、tar使用介绍
压缩解压缩命令介绍.gz 压缩为gzip文件.bz2 压缩为bzip2文件.tar 打包文件,将多个文件合并成一个目录.tar.gz 先打成tar包,再压缩为gzip文件.tar.bz2 先打成tar ...
- python os,sys模块的使用
首先,os模块是用来与操作系统进行交互的模块,可以对操作系统上的一些东西进行操作 而sys是用来对解释器进行一些操作的 一.os os.getcwd() 获取当前工作目录,即当前python脚本工作的 ...
- sublime text 3的使用过程记录
1.使用cmd命令行: 首先配置环境变量(即将sublime text3.exe所在目录放在path路径).完成之后,既可以利用subl命令行 subl file :: 使用Sublime Text打 ...
- JS的闭包、高阶函数、柯里化
本文原链接:https://cloud.tencent.com/developer/article/1326958 https://cloud.tencent.com/developer/articl ...
- macbook secureCRT终端中文乱码的问题
最近mac用crt中文总是显示的是一串串问号, 而用自带的终端软件就不会出现乱码, 经过一番折腾暂时解决了这一问题, 方法如下: 1. 打开终端操作 sudo vim /etc/profile 在最后 ...
- 解决Error"基础连接已经关闭: 未能为SSL/TLS 安全通道建立信任关系
今天写程序的时候调用到一个第三方的DLL文件,本机调试一切都正常,但是程序不是到服务器以后一直提示一个BUG:"基础连接已经关闭: 未能为SSL/TLS 安全通道建立信任关系". ...
- shell脚本,awk取奇数行与偶数行方法。
第一种方法: 第二种方法: 第三种方法:
- TypeError: Cannot read property 'tap' of undefined
E:\vue-project\vue-element-admin-master>npm run build:prod vue-element-admin@3.8.1 build:prod E:\ ...
- php进行文件的强制下载
浏览器下载文件,例如在浏览器中可以直接打开的文件(.gif /.txt等).在进行文件下载操作时,默认是通过浏览器直接打开,而不是下载保存文件.并且通过这种方法下载文件可以不暴漏下载文件所在的路径,可 ...