为了方便测试代码的复用性,常常采用参数化。传递参数给测试代码 有一下两种方法;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. mybaties实体的 Mapper.xml文件中自定义sql时模糊查询的写法

    <select  id=selectByNameLike" parameterType="string" resultMap="BaseResultMap ...

  2. UIColor延伸:判断两个颜色是否相等

    不管UIColor使用CIColor,CGColor还是其他方式初始化的,其CGColor属性都是可用的.CoreGraphics中提供一个函数,用于判断两个CGColor是否相等,因此我们可以通过这 ...

  3. BZOJ1880: [Sdoi2009]Elaxia的路线(最短路)

    1880: [Sdoi2009]Elaxia的路线 Time Limit: 4 Sec  Memory Limit: 64 MBSubmit: 2049  Solved: 805 题目链接:https ...

  4. [ldap]ldap相关问题

    背景: ldap数据库要同步,按照如下操作步骤: 1.导出: 使用slapcat,slapcat直接对数据库操作, slapcat 2.将所需的条目取出,生成文件in.ldif 3.在目标机器上导入: ...

  5. bzoj 4070 [Apio2015]雅加达的摩天楼 Dijkstra+建图

    [Apio2015]雅加达的摩天楼 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 644  Solved: 238[Submit][Status][D ...

  6. 如何更有效使用 Rational AppScan 扫描大型网站,第 2 部分: 案例分析

    使用 AppScan 进行扫描 针对大型网站的扫描,我们按照戴明环 PDCA 的方法论来进行规划和讨论,建议 AppScan 使用步骤:计划(Plan).执行(Do).检查(check).分析(Ana ...

  7. Mybatis(4) 映射文件-参数处理

    参数处理: 单参数处理: mybatis 不会做任何特殊处理. #{key} : key 可以写任何字段取出参数值. 测试方法: mapper接口: mapper.xml: 控制台: 多参数处理: m ...

  8. 转:PriorityQueue

    转自:PriorityQueue 本文github地址 Java中PriorityQueue通过二叉小顶堆实现,可以用一棵完全二叉树表示.本文从Queue接口函数出发,结合生动的图解,深入浅出地 分析 ...

  9. 使用python脚本配置zabbix发送报警邮件

    #前提得在zabbix_server配置文件中配置触发脚本的目录,例如,我配置的在/usr/local/zabbix/server/scripts目录下 编写python脚本如下 因为我的服务器在腾讯 ...

  10. onCreateView的一个细节--Fragment

    public View onCreateView(LayoutInflater inflater, ViewGroup contaiiner, Bundle savedInstanceState) 在 ...