使用到的技术: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 = "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(); } } }
时间: 2024-10-04 17:13:42