博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
seleniumPO模式
阅读量:7015 次
发布时间:2019-06-28

本文共 7315 字,大约阅读时间需要 24 分钟。

 

一、框架目录结构

 

二、代码

  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

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

你可能感兴趣的文章
Qmail 邮件系统维护管理技术文档
查看>>
Google Guava - Cache
查看>>
你以为的SPSS只是简单的数据分析软件吗?
查看>>
CSS Grid Simple Example
查看>>
《Windows服务器配置与管理》本地用户、组的管理
查看>>
mysql数据库移植sqlserver数据库
查看>>
使用update-alternatives 命令修改Java版本-自动切换Java版本
查看>>
SQL Server 2016 Failover Cluster+ ALwaysOn(二)
查看>>
spring源码--依赖注入
查看>>
rhel7配置多用户tiger vnc server
查看>>
iOS播放系统声音
查看>>
const 命令
查看>>
我的友情链接
查看>>
linux系统root口令丢失
查看>>
菜鸟学Linux 第088篇笔记 配置heartbeat基于crm管理
查看>>
docker之基础命令
查看>>
Win10 微软拼音添加小鹤双拼
查看>>
Centos 6下的wget进度条多行显示bug
查看>>
缓存Redis和Memcached的使用和对比
查看>>
Android开机自动运行APP——BroadcastReceiver
查看>>