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 ...
随机推荐
- [luogu 1967]货车运输
货车运输 题目描述 A 国有 n 座城市,编号从 1 到 n,城市之间有 m 条双向道路.每一条道路对车辆都有重量限制,简称限重.现在有 q 辆货车在运输货物, 司机们想知道每辆车在不超过车辆限重的情 ...
- 右侧导航栏(动态添加数据到list)
页面样式 <style> .scroll { position: fixed; right: 5%; top: 5em; background: #ccc; display: none; ...
- 【转】Maven项目中将配置文件打包到jar包中
参考博客:http://blog.csdn.net/ciedecem/article/details/10382275 问题: 项目中需要用到从文件中加载json数据,如图放在conf目录下. 程序中 ...
- 集合(Map、可变参数、Collections)
集合 第1章 Map接口 1.1 Map接口概述 我们通过查看Map接口描述,发现Map接口下的集合与Collection接口下的集合,它们存储数据的形式不同,如下图. l Collection中的集 ...
- 在使用seek()函数时,有时候会报错为 “io.UnsupportedOperation: can't do nonzero cur-relative seeks”,代码如下:
__author__ = 'ZHHT' #!/usr/bin/env python # -*- coding:utf-8 -*- import os f = open("test1" ...
- Android获取res目录下图片的uri
Uri.parse("android.resource://" + getApplicationContext().getPackageName() + "/" ...
- CentOS 7安装Docker服务详细过程
---恢复内容开始--- Docker 简介 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟 ...
- SharePoint Server和Office 365之间的混合模式集成概述
正如您可能已经知道的那样,云中的Microsoft Office 365和SharePoint Server 2013/2016内部部署可以通过多种方式协同工作.这些通常被称为混合模式,因为它们将功能 ...
- 【UML】状态图Statechart diagram(转)
前言 UML由动态图和静态图组成,状态图就是属于动态图中较为重要的一张图. 定义 用来描述一个特定对象的所有可能状态以及由于各种事件的发生而引起的状态之间的转移. 目的 ...
- 导入文件 服务器报错,有可能是 开发时候是window 服务器是linux,两个系统的文件系统的/和\是相反的,要注意这块
导入文件 服务器报错,有可能是 开发时候是window 服务器是linux,两个系统的文件系统的/和\是相反的,要注意这块