selenium 参数传递(testng.xml 、DataProvider )
2024-10-11 00:36:50
为了方便测试代码的复用性,常常采用参数化。传递参数给测试代码 有一下两种方法;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); }
}
最新文章
- java中实现同步的两种方式:syschronized和lock的区别和联系
- img加载在IE11,chrome,FF下的不同
- safari渲染Transition动画不流畅问题
- JSP 中 forward 和 redirect 的区别_2014.12.31
- LeetCode Populating Next Right Pointers in Each Node (技巧)
- git 的版本回滚
- Android项目---LayoutParams
- MacOSX中使用NSWindow创建背景透明的窗体
- 浩哥解析MyBatis源码(七)——DataSource数据源模块之托管数据源
- nginx响应高并发参数配置
- C# TabControl标签的隐藏
- 利用css实现hover动态效果
- 【转载 Hadoop&;Spark 动手实践 2】Hadoop2.7.3 HDFS理论与动手实践
- sublime text 3中安装ctags支持函数跳转,安装convertToUtf8支持中文步骤[工具篇]
- eclipse中使用svn提交,更新代码。
- Spring 学习——Resources接口
- 2.3Python基础语法(三)之输入输出
- Python 字典(联合内存、联合数组)
- Vmware-虚拟机中ubuntu不能联网问题的解决——NAT方式
- go练习3 --map的操作
热门文章
- UVA.10474 Where is the Marble ( 排序 二分查找 )
- HDOJ.2955 Robberies (01背包+概率问题)
- jquery Promise和ES6 Promise的区别
- mybatis Mapper 中resultType使用方法及返回值为Map的写法
- 在eclipse中安装html编辑器插件
- Python爬虫学习笔记之微信宫格验证码的识别(存在问题)
- 【BZOJ4819】【SDOI2017】新生舞会 [费用流][分数规划]
- Achain 钱包部署
- [Unity]插件Node Editor介绍 实现类似状态机画布的扩展
- cnn 卷积神经网络 人脸识别