一、框架目录结构

seleniumPO模式-LMLPHP

二、代码

  2.1page层代码

 package com.mianshui.page;

 import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy; public class LoginPage { //用户名输入框
@FindBy(className="dlemail")
private WebElement uName;
//密码输入框
@FindBy(className="dlpwd")
private WebElement pwd;
//登录按钮
@FindBy(id="dologin")
private WebElement loginButton;
//继续登录按钮
@FindBy(className="u-btn")
private WebElement continueLogin; //输入用户名
public void inputUsername(String userName){
System.out.println(userName);
uName.clear();
uName.sendKeys(userName); }
//输入密码
public void inputPwd(String passWord){
pwd.clear();
pwd.sendKeys(passWord);
}
//单击登录
public void clickLoginButton(String string){
loginButton.click();
}
//单击继续登录
public void continueLogin(String string){
continueLogin.click();
}
}

  2.2 case层

 package com.mianshui.testScript;

 import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.PageFactory;
import org.testng.Assert;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import com.mianshui.page.LoginPage;
import com.mianshui.page.MainPage;
import com.mianshui.util.ExcelUtil;
/*
* 定位语句和测试代码分离:封装在page类中
* 测试数据与测试代码分离:读取excel文件
*/
public class Login126Mail_PO {
public static WebDriver driver;
@Test
public static void login126Mail() throws Exception {
//定义用例路径
String excelPath= "D://MyJavaWorkSpace//TestProject//src//com//mianshui//data//126MailLoginCase.xlsx";
//读取用例sheet页
ExcelUtil.setExcelFile(excelPath, "login");
//打开浏览器
String BrowserName=ExcelUtil.getCellData(1, 4);
if (BrowserName.equalsIgnoreCase("firefox")) {
driver=new FirefoxDriver();
}else if (BrowserName.equalsIgnoreCase("chrome")) {
driver=new ChromeDriver();
} //输入网址
driver.get(ExcelUtil.getCellData(2, 4));
//切换frame
driver.switchTo().frame("x-URS-iframe"); //初始化page页面(注意:要放在打开浏览器之后)
LoginPage loginPage=PageFactory.initElements(driver, LoginPage.class);
MainPage mainPage=PageFactory.initElements(driver, MainPage.class);
//输入账户
loginPage.inputUsername(ExcelUtil.getCellData(3, 4));
//输入密码
loginPage.inputPwd(ExcelUtil.getCellData(4, 4));
//单击登录
loginPage.clickLoginButton(null);
//单击继续登录
Thread.sleep(3000);
loginPage.continueLogin(null);
//断言登录是否成功
Thread.sleep(2000);
Assert.assertEquals(mainPage.getEmailAdd(), ExcelUtil.getCellData(3, 4)+"@126.com");
} @BeforeMethod
public static void beforeMethod(){ } @AfterMethod
public static void afterMethod(){ }
}

  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操作

  2.4 data层

seleniumPO模式-LMLPHP

05-08 15:27