• selenium 参数传递(testng.xml 、DataProvider )


    为了方便测试代码的复用性,常常采用参数化。传递参数给测试代码 有一下两种方法;1、通过配置XML文件实现。2、通过DataProvider 传递参数。

    注意:DataProvider 传递参数返回的是一个Object对象或迭代器的对象。

    DataProvider

    一、通过testng.xml 传递参数给测试代码

     1 package com.TestNG.web;
     2 
     3 import java.util.concurrent.TimeUnit;
     4 import org.openqa.selenium.*;
     5 import org.openqa.selenium.chrome.ChromeDriver;
     6 import org.openqa.selenium.chrome.ChromeOptions;
     7 import static org.testng.Assert.assertEquals;
     8 import org.testng.annotations.BeforeClass;
     9 import org.testng.annotations.AfterClass;
    10 import org.testng.annotations.Parameters;
    11 import org.testng.annotations.Test;
    12 
    13 public class testBaidu {
    14     private WebDriver driver;
    15     private String baseUrl;
    16 
    17     @BeforeClass
    18     public void setUp() throws Exception {
    19         System.setProperty("webdriver.chrome.driver", "D:/chromedriver_win32/chromedriver.exe");
    20         ChromeOptions Options = new ChromeOptions();
    21         Options.addArguments("user-data-dir=C:\Users\happy\AppData\Local\Google\Chrome\User Data");
    22         driver = new ChromeDriver(Options);
    23 
    24         baseUrl = "https://www.baidu.com/";
    25         driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
    26     }
    27 
    28     @Test
    29     @Parameters("test1") // 设置测试方法的入参
    30     public void testCase(String test1) throws Exception {
    31         driver.get(baseUrl + "/");
    32         System.out.println("sreach key value:" + test1);
    33         driver.findElement(By.id("kw")).sendKeys(test1);
    34         driver.findElement(By.id("su")).click();
    35         Thread.sleep(2000);
    36         String title = driver.getTitle();
    37         assertEquals(title, test1 + "_百度搜索");
    38     }
    39 
    40     @AfterClass
    41     public void tearDown() throws Exception {
    42         driver.quit();
    43     }
    44 }

    testNG.xml

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
     3 <suite name="Suite" parallel="none">
     4     
     5     <test name="Test">
     6     <parameter name="test1" value="testng" />
     7     <!-- 定义test1 的value 也就是传递给testCase(String test1)方法中的test1-->
     8         <classes>
     9             <class name="com.TestNG.web.testBaidu" />
    10         </classes>
    11     </test> 
    12     <!-- 第二次运行 -->
    13     <test name="Test1">
    14     <parameter name="test1" value="selenium" />
    15     <!-- 定义test1 的value 也就是传递给testCase(String test1)方法中的test1-->
    16         <classes>
    17             <class name="com.TestNG.web.testBaidu" />
    18         </classes>
    19     </test> <!-- Test -->    
    20 </suite> <!-- Suite -->

    二、通过DataProvider 传递参数

     参数列表为1;

     1 package com.TestNG.web;
     2 
     3 import static org.testng.Assert.assertEquals;
     4 import java.util.concurrent.TimeUnit;
     5 import org.openqa.selenium.By;
     6 import org.openqa.selenium.WebDriver;
     7 import org.openqa.selenium.chrome.ChromeDriver;
     8 import org.openqa.selenium.chrome.ChromeOptions;
     9 import org.testng.annotations.AfterClass;
    10 import org.testng.annotations.BeforeClass;
    11 import org.testng.annotations.DataProvider;
    12 import org.testng.annotations.Parameters;
    13 import org.testng.annotations.Test;
    14 
    15 public class TestDataProvider {
    16     private WebDriver driver;
    17     private String baseUrl;
    18 
    19     @BeforeClass
    20     public void setUp() throws Exception {
    21         System.setProperty("webdriver.chrome.driver", "D:/chromedriver_win32/chromedriver.exe");
    22         ChromeOptions Options = new ChromeOptions();
    23         Options.addArguments("user-data-dir=C:\Users\happy\AppData\Local\Google\Chrome\User Data");
    24         driver = new ChromeDriver(Options);
    25 
    26         baseUrl = "https://www.baidu.com/";
    27         driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
    28     }
    29 
    30     // 定义对象数组
    31     @DataProvider(name = "user")
    32     public Object[][] Users() {
    33         return new Object[][] { { "第一次搜索" }, { "第二次搜索" }, { "第三次搜索" }, { "第四次搜索" } };
    34         // 往调用该数据的函数中传递对应的值。
    35     }
    36     // 调用user 数组的值
    37 
    38     @Test(dataProvider = "user") // 设置测试方法的入参
    39     public void testCase(String test1) throws Exception {
    40         driver.get(baseUrl + "/");
    41         System.out.println("sreach key value:" + test1);
    42         driver.findElement(By.id("kw")).sendKeys(test1);
    43         driver.findElement(By.id("su")).click();
    44         Thread.sleep(2000);
    45         String title = driver.getTitle();
    46         assertEquals(title, test1 + "_百度搜索");
    47     }
    48 
    49     @AfterClass
    50     public void tearDown() throws Exception {
    51         driver.quit();
    52     }
    53 }

     参数列表为2 ;需要传递两个参数。

     1 import org.testng.annotations.DataProvider;
     2 import org.testng.annotations.Test;
     3 
     4 public class TestDataProvider1 {
     5 
     6     // 定义对象数组
     7     @DataProvider(name = "user")
     8     public Object[][] Users() {
     9         return new Object[][] { { "第一次搜索", "第二次搜索" }, { "第三次搜索", "第四次搜索" } };
    10         // 往调用该数据的函数中传递对应的值。
    11     }
    12 
    13     // 调用user 数组的值
    14     @Test(dataProvider = "user")
    15     public void test1(String name1, String name2) {
    16 
    17         System.out.println(name1 + "   " + name2);
    18 
    19     }
    20 
    21 }

     

    参数列表为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);
    
    	}
    }
    

      

  • 相关阅读:
    第四篇 -- 收获颇丰的一天
    第十六篇 -- SuperIO学习
    第八篇 -- 用U盘制作启动盘装Win10系统
    第二十五篇 -- 学习第三十四天打卡20190726
    zabbix钉钉报警
    windows 远程连接“发生身份验证错误 要求的函数不受支持”
    限制IP远程访问
    查看、踢出在线用户
    codis
    Linux、windows安装java
  • 原文地址:https://www.cnblogs.com/linxinmeng/p/7026520.html
Copyright © 2020-2023  润新知