selenium 参数传递(testng.xml 、DataProvider )
为了方便测试代码的复用性,常常采用参数化。传递参数给测试代码 有一下两种方法;1、通过配置XML文件实现。2、通过DataProvider 传递参数。
注意:DataProvider 传递参数返回的是一个Object对象或迭代器的对象。
DataProvider
一、通过testng.xml 传递参数给测试代码
package com.TestNG.web; import java.util.concurrent.TimeUnit;
import org.openqa.selenium.*;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import static org.testng.Assert.assertEquals;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.AfterClass;
import org.testng.annotations.Parameters;
import org.testng.annotations.Test; public class testBaidu {
private WebDriver driver;
private String baseUrl; @BeforeClass
public void setUp() throws Exception {
System.setProperty("webdriver.chrome.driver", "D:/chromedriver_win32/chromedriver.exe");
ChromeOptions Options = new ChromeOptions();
Options.addArguments("user-data-dir=C:\\Users\\happy\\AppData\\Local\\Google\\Chrome\\User Data");
driver = new ChromeDriver(Options); baseUrl = "https://www.baidu.com/";
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
} @Test
@Parameters("test1") // 设置测试方法的入参
public void testCase(String test1) throws Exception {
driver.get(baseUrl + "/");
System.out.println("sreach key value:" + test1);
driver.findElement(By.id("kw")).sendKeys(test1);
driver.findElement(By.id("su")).click();
Thread.sleep(2000);
String title = driver.getTitle();
assertEquals(title, test1 + "_百度搜索");
} @AfterClass
public void tearDown() throws Exception {
driver.quit();
}
}
testNG.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite" parallel="none"> <test name="Test">
<parameter name="test1" value="testng" />
<!-- 定义test1 的value 也就是传递给testCase(String test1)方法中的test1-->
<classes>
<class name="com.TestNG.web.testBaidu" />
</classes>
</test>
<!-- 第二次运行 -->
<test name="Test1">
<parameter name="test1" value="selenium" />
<!-- 定义test1 的value 也就是传递给testCase(String test1)方法中的test1-->
<classes>
<class name="com.TestNG.web.testBaidu" />
</classes>
</test> <!-- Test -->
</suite> <!-- Suite -->
二、通过DataProvider 传递参数
参数列表为1;
package com.TestNG.web; import static org.testng.Assert.assertEquals;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Parameters;
import org.testng.annotations.Test; public class TestDataProvider {
private WebDriver driver;
private String baseUrl; @BeforeClass
public void setUp() throws Exception {
System.setProperty("webdriver.chrome.driver", "D:/chromedriver_win32/chromedriver.exe");
ChromeOptions Options = new ChromeOptions();
Options.addArguments("user-data-dir=C:\\Users\\happy\\AppData\\Local\\Google\\Chrome\\User Data");
driver = new ChromeDriver(Options); baseUrl = "https://www.baidu.com/";
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
} // 定义对象数组
@DataProvider(name = "user")
public Object[][] Users() {
return new Object[][] { { "第一次搜索" }, { "第二次搜索" }, { "第三次搜索" }, { "第四次搜索" } };
// 往调用该数据的函数中传递对应的值。
}
// 调用user 数组的值 @Test(dataProvider = "user") // 设置测试方法的入参
public void testCase(String test1) throws Exception {
driver.get(baseUrl + "/");
System.out.println("sreach key value:" + test1);
driver.findElement(By.id("kw")).sendKeys(test1);
driver.findElement(By.id("su")).click();
Thread.sleep(2000);
String title = driver.getTitle();
assertEquals(title, test1 + "_百度搜索");
} @AfterClass
public void tearDown() throws Exception {
driver.quit();
}
}
参数列表为2 ;需要传递两个参数。
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test; public class TestDataProvider1 { // 定义对象数组
@DataProvider(name = "user")
public Object[][] Users() {
return new Object[][] { { "第一次搜索", "第二次搜索" }, { "第三次搜索", "第四次搜索" } };
// 往调用该数据的函数中传递对应的值。
} // 调用user 数组的值
@Test(dataProvider = "user")
public void test1(String name1, String name2) { System.out.println(name1 + " " + name2); } }

参数列表为3 ;需要传递三个参数。
package com.TestNG.web; import org.testng.annotations.DataProvider;
import org.testng.annotations.Test; public class TestDataProvider2 {
// 定义对象数组
@DataProvider(name = "pw")
public Object[][] Users() {
return new Object[][] { { "1", "2", "3" }, { "4", "5", "6" } };
// 往调用该数据的函数中传递对应的值。
} // 调用user 数组的值
@Test(dataProvider = "pw")
public void test1(String name1, String name2, String name3) {
System.out.println(name1 + " " + name2 + " " + name3); }
}

selenium 参数传递(testng.xml 、DataProvider )的更多相关文章
- testng教程之testng.xml的配置和使用,以及参数传递
昨天学习了一下testng基础教程,http://www.cnblogs.com/tobecrazy/p/4579414.html 昨天主要学习的是testng 的annotation基本用法和生命周 ...
- selenium从入门到应用 - 7,testNG的DataProvider
本系列所有代码 https://github.com/zhangting85/simpleWebtest 本文将介绍一个Java+TestNG+Maven+Selenium的web自动化测试脚本环境下 ...
- IDEA 单元测试testng入门及testng.xml
直接进入正题: 1.TestNG的运行方式如下: With a testng.xml file 直接run as test suite With ant 使用ant From the command ...
- JAVA+SELENIUM+MAVEN+TESTNG框架(二)新建项目
1.新建maven项目 2.下载selenium的jar包,放入maven依赖库中 3.新增testng依赖库,build path->add libirary->testng 4.查看自 ...
- 使用testng.xml组织测试用例
测试用例类TeseNG.java: import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.open ...
- maven+selenium+java+testng+jenkins自动化测试
最近在公司搭建了一套基于maven+selenium+java+testng+jenkins的自动化测试框架,免得以后重写记录下 工程目录 pom.xml <project xmlns=&quo ...
- testng.xml文件结构组成及节点属性说明
TestNG的DTD检查文件:http://testng.org/testng-1.0.dtd.PHP 更多testng配置及说明,请移步http://testdoc.org/docmaster?pi ...
- TestNG中同一个类中执行多个test()方法如何配置testng.xml
public class IndexInfo extends BaseTesting{ private IndexPage IndexPage1;// private AddEquipmentInfo ...
- testng xml 示例
TestNG的DTD检查文件:http://testng.org/testng-1.0.dtd.php 更多testng配置及说明,请移步http://testdoc.org/docmaster?pi ...
随机推荐
- BZOJ4245 [ONTAK2015]OR-XOR 【贪心】
题目链接 BZOJ4245 题解 套路① 位运算当然要分位讨论,高位优先 考虑在\(or\)下,如果该位为\(0\),则每一位都为\(0\) 套路② 我们选m段异或和,转化为\(m\)个前缀和的点,且 ...
- 关于javascript数组的定义与其一些常用方法总结
由于JavaScript是一门宽松的语言,这种宽松可能会带来更加麻烦的事情.比如JavaScript的数组,定义与使用的方式太灵活有时候让人迷惑.下面将JavaScript中关于数组常用的方法.定义之 ...
- UVA:11183:Teen Girl Squad (有向图的最小生成树)
Teen Girl Squad Description: You are part of a group of n teenage girls armed with cellphones. You h ...
- java removeAll和重写equals、hashcode引起的性能问题
问题背景: 上周发现了一个spark job的执行时间从原来的10-15分钟延迟到了7个小时!wtf,这是出了什么事引起了这么大的性能问题!! 立马查看job的运行日志,发现多次运行都是在某一个固定的 ...
- SpringMVC+MyBatis开发中指定callSettersOnNulls,可解决返回字段不全的问题
Spring+MyBatis开发过程中,在xxMapper.xml配置文件进行select查询时resultType="map",如果要查询的字段是空值,在返回的map中会出现找不 ...
- C# 如何用多字符分割字符串
用单字符分割字符串大家应该很熟悉,例如: string source = "dfd^Afdf^AAAAAA^Adfdf"; var list= source.Split('A'); ...
- 选择Asp for javascript,非.net。
写Web类型的程序我使用过的服务器端语言有C#和Python.PHP稍Copy过几段代码,Asp很早听说过.C#我主要用来写Web服务比较多,C#这种强类型语言写Web不太爽,特别构造复杂的JSON数 ...
- 【BZOJ】1588: [HNOI2002]营业额统计
[算法]平衡树(treap)||双向链表 [题解]treap知识见数据结构. #include<cstdio> #include<algorithm> #include< ...
- 【洛谷 P4180】【模板】严格次小生成树[BJWC2010](倍增)
题目链接 题意如题. 这题作为我们KS图论的T4,我直接打了个很暴力的暴力,骗了20分.. 当然,我们KS里的数据范围远不及这题. 这题我debug了整整一个晚上还没debug出来,第二天早上眼前一亮 ...
- 启动Eclipse时,弹出failed to load the jni shared library
JDK版本和Eclipse版本不同的问题,JDK版本为64位,Eclipse版本为32位.