首页 > 代码库 > Selenium+excel实现参数化自动化测试
Selenium+excel实现参数化自动化测试
使用到的技术:POI对excel的解析、selenium自动化测试、junit
测试用例:登陆www.1905.com执行登陆-退出的操作
执行步骤:
1、首先创建一个excel,里面有用户名和密码列
2、新建 一个解析excel的java类
package com.m1905.java;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.io.InputStream;import java.util.ArrayList;import java.util.List;import org.apache.poi.hssf.usermodel.HSSFSheet;import org.apache.poi.hssf.usermodel.HSSFWorkbook;import org.apache.poi.poifs.filesystem.POIFSFileSystem;/** * 读取excel文件中的测试数据,将数据分为用户名和密码两组 * */public class ExcelWorkBook{ String username; String password; /** * 读取excel文件中的用户名列,即第一列 * @throws IOException * */ public List<String> readUsername(String filesrc) throws IOException{ List<String> userList = new ArrayList<String>(); //读取excel文件 InputStream is = new FileInputStream(filesrc); POIFSFileSystem fs = new POIFSFileSystem(is); HSSFWorkbook wb = new HSSFWorkbook(fs); HSSFSheet sheet = wb.getSheetAt(0); if(sheet==null){ System.out.println("暂无数据,请输入测试数据"); } //获取文件行数 int rows = sheet.getLastRowNum(); //获取文件列数 /*int cols = sheet.getRow(0).getPhysicalNumberOfCells(); //获取第一行的数据,一般第一行为属性值,所以这里可以忽略 String colValue1 = sheet.getRow(0).toString(); String colValues2 = sheet.getRow(1).toString();*/ //取出第一列的用户名,去除掉第一行中的标题 for(int i =1;i<rows+1;i++){ username = sheet.getRow(i).getCell(0).toString(); System.out.println(username); userList.add(username); } System.out.println(userList); return userList; } /** * 获取第二列,得到密码list * @throws IOException * */ public List<String> readPassword(String filesrc) throws IOException{ List<String> passwordList = new ArrayList<String>(); //读取excel文件 InputStream is = new FileInputStream(filesrc); POIFSFileSystem fs = new POIFSFileSystem(is); HSSFWorkbook wb = new HSSFWorkbook(fs); HSSFSheet sheet = wb.getSheetAt(0); if(sheet==null){ System.out.println("暂无数据,请输入测试数据"); } //取出第二列的密码值,去掉第一行中的标题 int rows=sheet.getLastRowNum(); for(int i=1;i<rows+1;i++){ password = sheet.getRow(i).getCell(1).toString(); System.out.println(password); passwordList.add(password); } System.out.println(passwordList); return passwordList; }}
3、创建一个junit测试类,对登陆过程进行测试
package com.m1905.junit;import java.io.IOException;import java.util.List;import java.util.concurrent.TimeUnit;import org.junit.AfterClass;import org.junit.BeforeClass;import org.junit.Test;import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.WebDriver.Navigation;import org.openqa.selenium.WebElement;import org.openqa.selenium.firefox.FirefoxDriver;import org.openqa.selenium.support.ui.ExpectedConditions;import org.openqa.selenium.support.ui.WebDriverWait;import com.m1905.java.ExcelWorkBook;public class LoginTest { private static WebDriver driver; private static Navigation navigate; private static String url="http://www.1905.com"; private static String filesrc = "http://www.mamicode.com/UserAndPassword.xls"; @BeforeClass public static void setUpBeforeClass() throws Exception { //加载浏览器 driver = new FirefoxDriver(); navigate = driver.navigate(); navigate.to(url); driver.manage().window().maximize(); } @AfterClass public static void tearDownAfterClass() throws Exception { if(driver!=null){ driver.close(); driver.quit(); } } @Test public void test() throws IOException { //初始化ExcelWorkBook Class ExcelWorkBook excelBook = new ExcelWorkBook(); driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); //取出username放在userlist集合里面 List<String> userList = excelBook.readUsername(filesrc); //取出password放在passwordList集合里面 List<String> passwordList = excelBook.readPassword(filesrc); //把取出来的数据输入到界面中的用户名和密码的输入框中 int usersize = userList.size(); for(int i=0;i<usersize;i++){ driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS); //点击登陆/注册按钮 WebElement LogAndReg = driver.findElement(By.xpath(".//*[@id=‘site_nav_md‘]/ul/li[2]/a")); LogAndReg.click(); //通过xpath定位到username输入框 WebElement username = driver.findElement(By.xpath(".//*[@id=‘inputUsername‘]")); //通过xpath定位到password输入框 WebElement password = driver.findElement(By.xpath(".//*[@id=‘inputPassword‘]")); //通过xpath定位到登陆按钮 WebElement login = driver.findElement(By.xpath(".//*[@id=‘loginreg‘]/div/div[1]/form/p/button")); //清除username输入框中的内容 username.clear(); //把usernamelist中的数据取出来,写入 String name = userList.get(i); username.sendKeys(name); //输入对应的password值 for(int j=0;j<passwordList.size();j++){ password.clear(); String pass = passwordList.get(j); password.sendKeys(pass); } //点击登陆 login.click(); //driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS); WebDriverWait wait = new WebDriverWait(driver,10); WebElement e1 = wait.until(ExpectedConditions.elementToBeClickable(By.xpath(".//*[@id=‘site_nav_md‘]/ul/li[3]/a[2]"))); //找到退出登陆按钮 e1.click();// WebElement logoutButton = driver.findElement(By.xpath(""));// logoutButton.click(); } }}
Selenium+excel实现参数化自动化测试
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。