selenium java po模式_selenium + java po模式

po模式大概介绍,大家也可以自己百度看看

Page Object模式主要是将每个页面设计为一个类class,这个类包含页面中需要测试的元素(按钮、输入框、URL、标题等)和实际操作方法,这样在写测试用例时可以通过调用页面类的方法和属性来获取页面元素和操作元素,这样优点是避免当页面元素的ID或位置改变时需要更改测试用例代码的情况。当页面元组定位发生改变时只要通过更改页面类的属性即可。

框架目录结构

e60a031e6183bbc05ba43818ea56ea4a.png

loginPage.java

package com.lilysilk.page;

import org.apache.poi.util.SuppressForbidden;

import org.openqa.selenium.WebElement;

import org.openqa.selenium.support.FindBy;

/**

* 定位语句与测试代码封装

* */

public class loginPage {

//登录页面

@FindBy(className="touXiang")

private WebElement uloginPage;

//用户名输入框

@FindBy(xpath="//div[@class='userLogin']/div[1]/input[@id='email']")

private WebElement uName;

//密码输入框

@FindBy(xpath="//div[@class='userLogin']/div[2]/input[@id='password']")

private WebElement uPwd;

//登录按钮

@FindBy(id="loginButton")

private WebElement loginBtn;

//点击跳转登录页面

public void goLoginPage() {

uloginPage.click();

}

//输入用户名

public void loginName(String username) {

System.out.println(username);

uName.clear();

uName.sendKeys(username);

}

//输入密码

public void loginPwd(String password) {

System.out.println(password);

uPwd.clear();

uPwd.sendKeys(password);

}

//点击登录

public void loginBtn() {

loginBtn.click();

}

}

case层即处理层

loginLilysilk_Po.java

package com.lilysilk.testcase;

import java.util.concurrent.TimeUnit;

import org.junit.*;

import org.openqa.selenium.WebDriver;

import org.openqa.selenium.chrome.ChromeDriver;

import org.openqa.selenium.chrome.ChromeOptions;

import org.openqa.selenium.firefox.FirefoxDriver;

import org.openqa.selenium.support.PageFactory;

import org.testng.annotations.AfterMethod;

import org.testng.annotations.BeforeMethod;

import com.lilysilk.page.loginPage;

import com.lilysilk.util.ExcelUtil;

public class loginLilysilk_Po {

public static WebDriver driver;

@Test

public void loginlily() throws Exception{

//定义测试用例路径

String excelPath="E:\\javaDemo\\testProjectPo\\src\\com\\lilysilk\\data\\lilysilk.xlsx";

//读取测试用例sheet页

ExcelUtil.setExcelFile(excelPath,"login");

//打开浏览器

String BrowserName=ExcelUtil.getCellData(1,4);

//修改浏览器语言

ChromeOptions op=new ChromeOptions();

op.addArguments("--lang=en-US");

//equals比较时,要比较大小写是否相同,equalsIgnoreCase,忽略了大小写,ignore就是忽略的意思

if(BrowserName.equalsIgnoreCase("chrome")){

//初始化浏览器实例

driver=new ChromeDriver(op);

}else {

driver=new FirefoxDriver(op);

}

//浏览器最大化

driver.manage().window().maximize();

//打开网址

driver.get(ExcelUtil.getCellData(2, 4));

//初始化page页面(注意:要放在打开浏览器之后)

loginPage loginPage=PageFactory.initElements(driver, loginPage.class);

loginPage.goLoginPage();

loginPage.loginName("112233@qq.com");

loginPage.loginPwd("112233@qq.com");

loginPage.loginBtn();

}

@BeforeMethod

public static void beforeMethod(){

}

@AfterMethod

public static void afterMethod(){

driver.close();

}

}

工具类

ExcelUtil.java

package com.lilysilk.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;

/**

*

*@Comments : 导入导出Excel工具类

*此类事实现操作指定的excel文件中的指定sheet页、

*读取指定的单元格内容、获取sheet中最后一行的行号的功能

*

*

**/

public class ExcelUtil {

private static XSSFSheet ExcelWSheet;

private static XSSFWorkbook ExcelWBook;//excel文件对象

private static XSSFCell ExcelCell;//单元格对象

//舍得需要操作的excel的文件路径和sheet名称

//在读,写excel文件时,均需先调用此方法,设定要操作的excel的路径和sheet名称

public static void setExcelFile(String Path,String SheetName) {

FileInputStream ExcelFile;

try {

//实例化excel文件的FileInputStream对象

ExcelFile=new FileInputStream(Path);

//实例化EXCEL文件的execlWXSSFWorkbook对象

ExcelWBook =new XSSFWorkbook(ExcelFile);

//实例化 XSSFCell 对象,指定excel文件中的sheet名称,后续用于sheet中行、列和单元格的操作

ExcelWSheet=ExcelWBook.getSheet(SheetName);

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

/**

* @param rowNum行 colNum列

**/

//读取excel文件中指定的单元格的函数,此函数只支持扩展名为.xlsx的excel文件

public static String getCellData(int rowNum,int colNum)throws Exception {

try {

//通过函数参数知道单元格的行号与列号,获取指定的单元格对象

ExcelCell=ExcelWSheet.getRow(rowNum).getCell(colNum);

//如果单元格的内容为字符串类型,则使用getStringCellValue方法来获取单元格内容

//如果单元格的内容为数字类型, 则使用getNumericCellValue方法来获取单元格内容

String CellData =ExcelCell.getCellType()==XSSFCell.CELL_TYPE_STRING?ExcelCell.getStringCellValue()+"":String.valueOf(Math.round(ExcelCell.getNumericCellValue()));

return CellData;

}

catch(Exception e){

e.printStackTrace();

//读取遇到异常,则返回空字符串

return "错了";

}

}

//获取excel文件的最后一行的行号

public static int getLastRowNum() {

//函数返回sheet的最后一行行号

return ExcelWSheet.getLastRowNum();

}

}

data层即数据层

9a9cdda6735582195c291cfa5af0269f.png

遇到的问题:

问题1:org.apache.poi.openxml4j.exceptions.OLE2NotOfficeXmlFileException: The supplied data appears to be in the OLE2 Format. You are calling the part of POI that deals with OOXML (Office Open XML) Documents. You need to call a different part of POI to process this data (eg HSSF instead of XSSF)

a18341ecd0c347af610ac6b4fbcdf29e.png像这个报错就是所用的XSSF是支持excel2007版本以上的,支持格式为xlsx,如果想要支持2003版本的xls,需要将XSSF换成HSSF的问题2:部分jar包没有,需要导入,按照报错内容导入jar包就好

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/561340.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

条件队列java_Java并发系列(4)AbstractQueuedSynchronizer源码分析之条件队列

AbstractQueuedSynchronizer内部维护了一个同步状态和两个排队区,这两个排队区分别是同步队列和条件队列。我们还是拿公共厕所做比喻,同步队列是主要的排队区,如果公共厕所没开放,所有想要进入厕所的人都得在这里排队。而条件队列…

java调用打印机打印需要进行什么操作_Java调用打印机程序有什么特点?

import java。awt。*;import java。awt。event。*;import java。awt。font。*;import java。awt。geom。*;import java。awt。print。*;import java。util。*;import javax。print。*;import javax。print。attribute。*;import javax。swing。*;/**This program demonstrates …

java基础语法实例教程_Java 基础语法

一个 Java 程序可以认为是一系列对象的集合,而这些对象通过调用彼此的方法来协同工作面向对象中的一些概念下表列出了 面向对象 编程中的一些概念名词说明对象对象是类的一个实例,有状态和行为。例如,一条狗是一个对象,它的状态有…

python3软件怎么使用_python3怎么使用pip

pip 是 Python 包管理工具,该工具提供了对Python 包的查找、下载、安装、卸载的功能。目前如果你在 python.org 下载最新版本的安装包,则是已经自带了该工具。Python 2.7.9 或 Python 3.4 以上版本都自带 pip 工具。pip 官网:https://pypi.o…

svn php改客户端密码_记录VisualSVNServer配置在线密码修改功能

VisualSVN Server使用的是64位版查看对应的apache版本号是 2.2.32.这个版本需要使用php5.5以下的,且需要使用64位的php。下载php 5.4 的64位版本。配置Visual SVN Server支持php1. 将下载的php解压缩到VisualSVNServer的目录中C:Program FilesVisualSVN Serverphp2.…

java大量浮点数如何作比较,Java如何正确比较浮点数

看下面这段代码,将 d1 和 d2 两个浮点数进行比较,输出的结果会是什么?double d1 .1 * 3;double d2 .3;System.out.println(d1 d2);按照正常逻辑来看,d1经过计算之后的结果应该是0.3,最后打印的结果应该是 true&…

文本留言 php,一个php作的文本留言本的例子(一)

一个php作的文本留言本的例子(一)更新时间:2006年10月09日 00:00:00 作者:大家知道,数据库对于网络来说的重要性.由于cgi的复杂,现在asp和phpmysql已经成为主流.几乎所有的个人网页都要用到留言本,可是申请的留言本很不稳定.这为网上的交流带来了诸多不…

深度学习图像融合_基于深度学习的图像超分辨率最新进展与趋势【附PDF】

因PDF资源在微信公众号关注公众号:人工智能前沿讲习回复“超分辨”获取文章PDF1、主题简介图像超分辨率是计算机视觉和图像处理领域一个非常重要的研究问题,在医疗图像分析、生物特征识别、视频监控与安全等实际场景中有着广泛的应用。随着深度学习技术的…

php cookie 二级域名,php如何设置cookie对整个域名有效及二级域名

昨天获取cookie老是失败,各种查原因,然后测试只能在生成的目录下共享cookie,然后后面想起了这个原因。默认情况下的cookie仅对该域名(例如www.example.com)本身有效,出了该域名(例如test.example.com),cookie便会失效&…

ubuntu安装python_Linux下的Python开发配置鸭

linxu下python环境的开发配置前言linux是目前为止最好上手的系统也是最适合新手学习的系统而python是可以最快让大家知道怎么写出东西的语言,简单的几十个小时的学习之后就只需要看懂库的文档就可以很快地写出很好用的东西,于是很多人自然很喜欢这个组合…

java 里面write,java 中 System.out.println()和System.out.write()的区别

java 中 System.out.println()和System.out.write()的区别.这两个函数一个是System.out.write()输出字符流,System.out.println()是输出字节流,很简单。看下面这个程序就明白了。//import java.util.*;public class Test {public static void main(Strin…

高通cpu排行_安卓手机芯片排行:麒麟990 5G仅排第三,980还输给了765G?

众所周知,在移动端芯片行业,高通多年来都保持着一种舍我其谁的劲头,但随着科技的不断发展,其他厂商也开辟了自己的新天地,截至目前,全球主流的智能手机搭载的处理器主要来自于华为海思、高通骁龙、三星、联…

java编程规范每行代码窄字符,wiki/0xFE_编程规范.md at master · islibra/wiki · GitHub

0xFE_编程规范使用UTF-8编码使用空格缩进命名清晰表达意图, 少用缩写(行业通用除外, 如: requestreq, responseresp, messagemsg), 不应使用特殊前缀或后缀用复数形式代表集合\w{2,64}, 除循环变量i, j, k, 异常e外类型命名风格包全小写, 点号分割, 允许数字, 无下划线类, 接口…

keil4怎么移植其他人的程序_简单和你聊聊造血干细胞移植!

造血干细胞是个什么“鸟”?造血干细胞,人体血细胞的老祖宗。它的分裂方式也十分独特,由一个细胞分裂为两个细胞时,其中一个细胞会慢慢长大,增殖分化为红细胞、白细胞和血小板等等;另一个细胞仍然保持干细胞…

matlab 信号处理 教程,MATLAB信号处理仿真 实验_教程-学习文件.pdf

MATLAB信号处理仿真实验从观察正弦波开始用绳量给我的地界坐落在佳美之处我的产业实在美好杜伟韬duweitao广播电视数字化教育部工程研究中心2013年 4月23 日于 北京定福庄献给广播学院的核桃林,还有我的老师们目目目录录录0 修修修订订订记记记录录录和和和意意意见…

怎么在电脑上任意截屏_草地上打滚、墙上任意涂鸦,幼儿园让孩子“想怎么玩就怎么玩”...

(图为孩子们开心地在“山坡”上打滚。 学校供图)长江日报-长江网10月26日讯 10月26日,汉阳区玉龙幼儿园的孩子们冲上小山坡滑草,草地上打滚,滚筒里钻来钻去,墙上任意涂鸦,在梯子搭建的木桥上自由行走……孩子们自发地三…

pyaudio usb playback_苹果安卓手机充电器USB接口PSD源文件psd素材

分类:详情页类目:数码家电格式:psd体积:尺寸:790*12168编号:13182638软件: Photoshop CS6(.psd)颜色模式 : RGB图像类型:位图版权:独家版权LOGO/ 实景图/人物/字体/产品 …

mysql 执行sql error 2,Mysql:执行source sql脚本时,出现:error 2

Centos下部署mysql:1、yum -y install mysql*;2、service mysqld start;3、chkconfig mysqld on;4、设置用户名和密码:mysqladmin -uroot password1234565、进入数据库:mysql -uroot -p 回车后,输入设置的密码6、建立数据库:creat…

horizon client 无法识别域_iText for Mac(OCR识别图中文字工具)

itext mac中文特别版是一款从图片中识别文字的OCR(光学字符识别)工具。通过截图、拖拽图片,即可以从扫描版的PDF等任意图片中识字,并且可以很好的解决摘抄和批注需求。而且itext mac版使用腾讯、Google 双引擎,识别效果惊人地准确。iText for…

mysql 操作表的例子,mysql中库和表的简单操作总结(附示例)

本篇文章给大家带来的内容是关于mysql中库和表的简单操作总结(附示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。一. 库的操作1.创建数据库创建数据库:create database 库名 charset utf8; charset uft8 可选项1.2 数据…