一、框架目录结构
二、代码
2.1page层代码
1 package com.mianshui.page; 2 3 import org.openqa.selenium.WebElement; 4 import org.openqa.selenium.support.FindBy; 5 6 7 public class LoginPage { 8 9 10 //用户名输入框11 @FindBy(className="dlemail")12 private WebElement uName;13 //密码输入框14 @FindBy(className="dlpwd")15 private WebElement pwd;16 //登录按钮17 @FindBy(id="dologin")18 private WebElement loginButton;19 //继续登录按钮20 @FindBy(className="u-btn")21 private WebElement continueLogin;22 23 //输入用户名24 public void inputUsername(String userName){25 System.out.println(userName);26 uName.clear();27 uName.sendKeys(userName);28 29 }30 //输入密码31 public void inputPwd(String passWord){32 pwd.clear();33 pwd.sendKeys(passWord);34 }35 //单击登录36 public void clickLoginButton(String string){37 loginButton.click();38 }39 //单击继续登录40 public void continueLogin(String string){41 continueLogin.click();42 }43 }
2.2 case层
1 package com.mianshui.testScript; 2 3 import org.openqa.selenium.WebDriver; 4 import org.openqa.selenium.chrome.ChromeDriver; 5 import org.openqa.selenium.firefox.FirefoxDriver; 6 import org.openqa.selenium.support.PageFactory; 7 import org.testng.Assert; 8 import org.testng.annotations.AfterMethod; 9 import org.testng.annotations.BeforeMethod;10 import org.testng.annotations.Test;11 import com.mianshui.page.LoginPage;12 import com.mianshui.page.MainPage;13 import com.mianshui.util.ExcelUtil;14 /*15 * 定位语句和测试代码分离:封装在page类中16 * 测试数据与测试代码分离:读取excel文件17 */18 public class Login126Mail_PO {19 public static WebDriver driver;20 @Test21 public static void login126Mail() throws Exception {22 //定义用例路径23 String excelPath= "D://MyJavaWorkSpace//TestProject//src//com//mianshui//data//126MailLoginCase.xlsx";24 //读取用例sheet页25 ExcelUtil.setExcelFile(excelPath, "login"); 26 //打开浏览器27 String BrowserName=ExcelUtil.getCellData(1, 4);28 if (BrowserName.equalsIgnoreCase("firefox")) {29 driver=new FirefoxDriver();30 }else if (BrowserName.equalsIgnoreCase("chrome")) {31 driver=new ChromeDriver();32 }33 34 //输入网址35 driver.get(ExcelUtil.getCellData(2, 4));36 //切换frame37 driver.switchTo().frame("x-URS-iframe");38 39 //初始化page页面(注意:要放在打开浏览器之后)40 LoginPage loginPage=PageFactory.initElements(driver, LoginPage.class);41 MainPage mainPage=PageFactory.initElements(driver, MainPage.class);42 //输入账户43 loginPage.inputUsername(ExcelUtil.getCellData(3, 4));44 //输入密码45 loginPage.inputPwd(ExcelUtil.getCellData(4, 4));46 //单击登录47 loginPage.clickLoginButton(null);48 //单击继续登录49 Thread.sleep(3000);50 loginPage.continueLogin(null);51 //断言登录是否成功52 Thread.sleep(2000);53 Assert.assertEquals(mainPage.getEmailAdd(), ExcelUtil.getCellData(3, 4)+"@126.com");54 }55 56 @BeforeMethod57 public static void beforeMethod(){58 59 }60 61 @AfterMethod62 public static void afterMethod(){63 64 }65 }
2.3 工具类(excel操作、截图、等待方法.....)
package com.mianshui.util;
import java.io.FileInputStream;import org.apache.poi.xssf.usermodel.XSSFCell;import org.apache.poi.xssf.usermodel.XSSFSheet;import org.apache.poi.xssf.usermodel.XSSFWorkbook;;//此类事实现操作指定的excel文件中的指定sheet页、读取指定的单元格内容、获取sheet中最后一行的行号的功能
public class ExcelUtil {private static XSSFSheet ExcelWSheet;
private static XSSFWorkbook ExcelWBook; private static XSSFCell Cell;// 设定要操作的excel的文件路径和sheet名称// 在读、写excel文件时,均需先调用此方法,设定要操作的excel文件路径和要操作的sheet名称 public static void setExcelFile(String Path,String SheetName){ FileInputStream ExcelFile; try { //实例化excel文件的FileInputStream 对象 ExcelFile = new FileInputStream(Path); //实例化excel文件的 XSSFWorkbook 对象 ExcelWBook = new XSSFWorkbook(ExcelFile); //实例化 XSSFCell 对象,指定excel文件中的sheet名称,后续用于sheet中行、列和单元格的操作 ExcelWSheet = ExcelWBook.getSheet(SheetName); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } //读取excel文件中指定的单元格的函数,此函数只支持扩展名为 .xlsx 的excel文件 public static String getCellData (int RowNum, int ColNum) throws Exception { try { //通过函数参数指定的单元格的行号和列号,获取指定的单元格对象 Cell = ExcelWSheet.getRow(RowNum).getCell(ColNum); //如果单元格的内容为字符串类型,则使用getStringCellValue方法来获取单元格内容 //如果单元格的内容为数字类型, 则使用getNumericCellValue方法来获取单元格内容 String CellData = Cell.getCellType() == XSSFCell.CELL_TYPE_STRING ? Cell.getStringCellValue() + "" : String.valueOf(Math.round(Cell.getNumericCellValue())); return CellData; }catch (Exception e){ e.printStackTrace(); //读取遇到异常,则返回空字符串 return "错了"; } } //获取excel文件的最后一行的行号 public static int getLastRowNum(){ //函数返回sheet的最后一行的行号 return ExcelWSheet.getLastRowNum(); }}Excel操作
1 package com.mianshui.util; 2 3 4 import java.io.FileInputStream; 5 import org.apache.poi.xssf.usermodel.XSSFCell; 6 import org.apache.poi.xssf.usermodel.XSSFSheet; 7 import org.apache.poi.xssf.usermodel.XSSFWorkbook;; 8 9 //此类事实现操作指定的excel文件中的指定sheet页、读取指定的单元格内容、获取sheet中最后一行的行号的功能10 public class ExcelUtil {11 12 private static XSSFSheet ExcelWSheet;13 private static XSSFWorkbook ExcelWBook;14 private static XSSFCell Cell;15 // 设定要操作的excel的文件路径和sheet名称16 // 在读、写excel文件时,均需先调用此方法,设定要操作的excel文件路径和要操作的sheet名称17 public static void setExcelFile(String Path,String SheetName){18 19 FileInputStream ExcelFile;20 21 22 try {23 //实例化excel文件的FileInputStream 对象24 ExcelFile = new FileInputStream(Path);25 26 //实例化excel文件的 XSSFWorkbook 对象27 ExcelWBook = new XSSFWorkbook(ExcelFile);28 29 //实例化 XSSFCell 对象,指定excel文件中的sheet名称,后续用于sheet中行、列和单元格的操作30 ExcelWSheet = ExcelWBook.getSheet(SheetName);31 32 } catch (Exception e) {33 // TODO Auto-generated catch block34 e.printStackTrace();35 }36 }37 //读取excel文件中指定的单元格的函数,此函数只支持扩展名为 .xlsx 的excel文件38 public static String getCellData (int RowNum, int ColNum) throws Exception {39 40 try {41 //通过函数参数指定的单元格的行号和列号,获取指定的单元格对象 42 Cell = ExcelWSheet.getRow(RowNum).getCell(ColNum);43 //如果单元格的内容为字符串类型,则使用getStringCellValue方法来获取单元格内容44 //如果单元格的内容为数字类型, 则使用getNumericCellValue方法来获取单元格内容45 46 String CellData = Cell.getCellType() == XSSFCell.CELL_TYPE_STRING ? Cell.getStringCellValue() + "" : String.valueOf(Math.round(Cell.getNumericCellValue()));47 48 49 return CellData;50 51 }catch (Exception e){52 e.printStackTrace();53 //读取遇到异常,则返回空字符串54 return "错了";55 }56 }57 //获取excel文件的最后一行的行号58 public static int getLastRowNum(){59 //函数返回sheet的最后一行的行号60 return ExcelWSheet.getLastRowNum();61 }62 63 }
2.4 data层
转载 https://www.cnblogs.com/gcgc/p/6502996.html