为了方便测试代码的复用性,常常采用参数化。传递参数给测试代码 有一下两种方法;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 )的更多相关文章

  1. testng教程之testng.xml的配置和使用,以及参数传递

    昨天学习了一下testng基础教程,http://www.cnblogs.com/tobecrazy/p/4579414.html 昨天主要学习的是testng 的annotation基本用法和生命周 ...

  2. selenium从入门到应用 - 7,testNG的DataProvider

    本系列所有代码 https://github.com/zhangting85/simpleWebtest 本文将介绍一个Java+TestNG+Maven+Selenium的web自动化测试脚本环境下 ...

  3. IDEA 单元测试testng入门及testng.xml

    直接进入正题: 1.TestNG的运行方式如下: With a testng.xml file 直接run as test suite With ant 使用ant From the command ...

  4. JAVA+SELENIUM+MAVEN+TESTNG框架(二)新建项目

    1.新建maven项目 2.下载selenium的jar包,放入maven依赖库中 3.新增testng依赖库,build path->add libirary->testng 4.查看自 ...

  5. 使用testng.xml组织测试用例

    测试用例类TeseNG.java: import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.open ...

  6. maven+selenium+java+testng+jenkins自动化测试

    最近在公司搭建了一套基于maven+selenium+java+testng+jenkins的自动化测试框架,免得以后重写记录下 工程目录 pom.xml <project xmlns=&quo ...

  7. testng.xml文件结构组成及节点属性说明

    TestNG的DTD检查文件:http://testng.org/testng-1.0.dtd.PHP 更多testng配置及说明,请移步http://testdoc.org/docmaster?pi ...

  8. TestNG中同一个类中执行多个test()方法如何配置testng.xml

    public class IndexInfo extends BaseTesting{ private IndexPage IndexPage1;// private AddEquipmentInfo ...

  9. testng xml 示例

    TestNG的DTD检查文件:http://testng.org/testng-1.0.dtd.php 更多testng配置及说明,请移步http://testdoc.org/docmaster?pi ...

随机推荐

  1. BZOJ2434 [Noi2011]阿狸的打字机 【AC自动机 + fail树 + 树状数组】

    2434: [Noi2011]阿狸的打字机 Time Limit: 10 Sec  Memory Limit: 256 MB Submit: 3610  Solved: 1960 [Submit][S ...

  2. HDU 2710

    Max Factor Time Limit: 2000/1000 MS(Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

  3. C#学习目录处理

    目录获取和处理: string path = ".";//表明要在当前所在的目录 //先定义目录信息变量 DirectoryInfo dir = new DirectoryInfo ...

  4. 手脱ACProtect V1.4X(有Stolen Code)

    1.载入PEID ACProtect V1.4X -> risco 首先需要说明的是,这个壳被偷取的代码非常多,如果去找的话会比较麻烦,所以我们换一种另类的方法,不脱壳也可以使用资源修改器对程序 ...

  5. 单线程的redis为什么达到每秒万级的处理速度?

    纯内存访问,redis将所有数据都放在内存中,内存响应时间大约为100纳秒,这是redis达到每秒万级级别访问的重要基础. 非阻塞IO,redis使用epoll作为IO多路复用技术的实现,再加上red ...

  6. [技巧篇]00.TrimFilter去掉jsp页面空白,提升访问速度

    最近感觉项目访问的速度有点慢,我就在网络中一顿搜索,发下了一个好东东,忍不住跟大家分享,希望大家可以试一试,确实有提升的空间啊!要求去除空白区.提取公用代码.减小页面. 胖先生乱搜之下,找到了Trim ...

  7. 应用Hash函数

    本文系转载,转自:http://www.blogjava.net/jinfei0627/articles/219543.html 应用Hash函数(java描述) 作者:冲处宇宙 时间:2007.1. ...

  8. loj515 「LibreOJ β Round #2」贪心只能过样例

    传送门:https://loj.ac/problem/515 [题解] 容易发现S最大到1000000. 于是我们有一个$O(n^2*S)$的dp做法. 容易发现可以被bitset优化. 于是复杂度就 ...

  9. Transformation(线段树+HDU4578+多种操作+鬼畜的代码)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4578 题目: 题意:n个数初始值为0,进行四种操作:1.将区间内的数字加c:2.将区间内的数字乘c:3 ...

  10. chrome最小字体12px如何修改

    在html标记样式里加入 <style> html { -webkit-text-size-adjust:none } </style> 这样的方式可以设置chrome字体小于 ...