seleniumPO模式

 

一、框架目录结构

 

二、代码

  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     @Test
21     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         //切换frame
37         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     @BeforeMethod
57     public static void  beforeMethod(){
58         
59     }
60     
61     @AfterMethod
62     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 block
34             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

posted @ 2018-01-12 14:06  janehost  阅读(175)  评论(0编辑  收藏  举报