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

转载于:https://www.cnblogs.com/LOVEYU/articles/8275432.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
课程简介:课程介绍你是否在寻找机会进入自动化测试领域?你是否渴望学习selenium webdriver + Java以及**的框架和技术进行web自动化测试?你是否感兴趣学习Selenium如何用在你现有的项目里的?这门课带你从Selenium搭建环境开始讲起,然后学习常用方法,单元测试,PO设计模式, jenkins等。我们假设学员没有任何自动化经验,来设计的这套课程。每个课题都从最基础的开始讲起。Selenium相关的该覆盖的课题都覆盖了。全程手写代码,逐步迭代,方便学习。例子都是来自于真实的web应用项目,帮助你理解不同的组件怎么用上自动化,这将展示给你一个行业层面的框架,增加自信心。这门课涵盖到基础到高级项目实战。您将会学到什么学完课程以后,你将了解Selenium Webdriver知识你将具备设计数据驱动框架、Page Object、等搭建自动化框架的能力用众多实例对Selenium现实场景应用进行深入理解了解单元测试, Jenkins, HTML报告,并发测试 你从网上随便选择一个网站,都可以尝试实现自动化,用所有可能的测试用例进行自动化测试将提高你的编码技能,以编写最优化的自动化测试用例代码你基本可以应对任何Selenium面试,并能从设计阶段开始领导整个Selenium自动化项目你将能够创建漂亮的报告来打动客户或领导更深入地理解自动化指南和代码质量标准会附带一个练习网站,可以用上所有可用的WebDriver功能,实现自动化【适合人群】软件手动测试人员想转为自动化测试的人员自动化软件测试人员想加强专业技能的刚毕业学生想从事软件行业QA 组长或项目经理【课程优势】学完课程以后,你将拥有完整的Selenium Webdriver知识,完整的项目实战【讲师介绍】资质介绍:12年以上开发、自动测试方面经验,其中7年以上测试开发经验,现为技术架构师新书“Python3+Selenium3自动化测试项目实战”作者【课程咨询】作者联系QQ:2574674466 完善的学习文档            

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值