python+selenium是什么,python selenium po模式
邮局模式大致介绍一下,大家也可以自己去百度看看
在页面对象模式中,主要将每个页面设计为类班级。该类包含页面中需要测试的元素(按钮、输入框、网址、标题等)和实际操作方法,在创建测试用例时可以调用页面类的方法和属性来获取页面元素和操作元素,因此页面元素的罗马数字3如果页元组的位置发生了变化,则可以更改页类的属性。
框架目录结构
loginPage.java
包com。百合丝绸。页面;
进口港.Apache.poi.util.suppress禁止;
importorg.openqa.selenium.web元素;
导入组织。打开QA。硒。支持。查找依据;
//*
*定位语句和测试代码包
*/
公共类日志页面{
//登录页面
@findby(classname=touxiang ))。
私有页面中的网元素波黑尤乐高
//用户名输入框
@ find by(XPath=/div[@ class=用户登录]/div[1]/input[@ id= email ]])
私有网元素显示操作系统信息
//密码输入框
@ find by(XPath=/div[@ class= user log in ]/div[2]/input[@ id= password ]])
私有网元素upwd
//登录按钮
@findby(id=loginbutton )。
私有WebElement loginBtn
//单击可跳转到登录页面
公共语音眉间-颅后点线登录页面(
uloginpage。点击(;
}
//输入用户名
公共语音登录名称(字符串用户名)。
系统. out.println(用户名;
乌纳梅。清除(;
uname.sendkeys(用户名;
}
//输入密码
publicvoidloginpwd(字符串密码)。
系统. out.println(密码);
upwd。清除(;
uwd.sendkeys(密码);
}
//单击登录
公共语音登录在BTN(
登录BTN。点击(;
}
}
情况层是处理层
loginLilysilk_Po.java
包com。百合丝绸。测试用例;
导入Java.util.concurrent.time单位;
导入org。朱尼特。*;
importorg.openqa.selenium.web驱动程序;
导入组织。打开QA。硒。chrome。铬驱动程序;
导入组织。打开QA。硒。chrome。铬选项;
导入组织。打开QA。硒。火狐。火狐浏览器驱动程序;
导入组织。打开QA。硒。支持。页面工厂;
进口港.TestNG .批注. after方法;
进口港.TestNG .批注. before方法;
导入com。百合丝绸。页面。登录页面;
导入com。百合丝绸。util。excel util
公共类loginlilysilk _ po {
公共静态网络驱动程序;
@测试
在莉莉()抛出异常{)中登录公共语音。
//定义测试用例的路径
stringexcelpath= e:\ Java demo \ \ test project po \ src \ com \ lily silk \ \ data \ \ lilys
诸如此类。xlsx ;
//读取测试用例表页
excel util。设置excelfile(excel路径,登录);
//打开浏览器
字符串浏览器名称=excel util。getcelldata(1,4);
//修改浏览器语言
chrome options op=new chrome options();
op . add参数(-lang=en-US );
//等于比较时,要比较大小写是否相同,equalsIgnoreCase,忽略了大小写,忽略就是忽略的意思
如果(浏览器名。equalsignorecase( chrome ){
//初始化浏览器实例
驱动因素=新chrome驱动(op);
}否则{
driver=新火狐驱动(op);
}
//浏览器最大化
driver.manage().窗口()。最大化();
//打开网址
司机。获取(excelutil。getcelldata(2,4));
//初始化页,面,张,版页面(注意:要放在打开浏览器之后)
登录页面登录页面=页面工厂。初始化元素(驱动程序,登录页面。类);
登录页面。gologinpage();
登录页面。loginname( 112233 @ QQ。com’);
登录页面。loginpwd( 112233 @ QQ。com’);
登录页面。loginbtn();
}
@以前方法
方法()之前的公共静态void
}
@AfterMethod
公共静态void afterMethod(){
司机。close();
}
}
工具类
ExcelUtil.java
包com。百合丝绸。util
导入Java。io。文件输入流;
导入org。阿帕奇。poi。xssf。用户模型。xssf单元格;
导入org。阿帕奇。poi。xssf。用户模型。xssf表;
导入org。阿帕奇。poi。xssf。用户模型。xssf工作簿;
/**
*
* @评论:导入导出超过工具类
*此类事实现操作指定的超过文件中的指定表页、
*读取指定的强健的高山内容、获取表中最后一行的行号的功能
*
*
**/
公共类ExcelUtil {
私有静态XSSFSheet ExcelWSheet
私有静态xssf workbook excel book//excel文件对象
私有静态XSSFCell ExcelCell//strong健的高山对象
//舍得需要操作的超过的文件路径和表名称
//在读,写超过文件时,均需先调用此方法,设定要操作的超过的路径和表名称
公共静态空集excelfile(String Path,String SheetName) {
文件输入流ExcelFile
尝试{
//实例化超过文件的文件输入流对象
ExcelFile=新文件输入流(路径);
//实例化超过文件的execlWXSSFWorkbook对象
ExcelWBook=新建xssf工作簿(excel文件);
//实例化XSSFCell对象,指定超过文件中的表名称,后续用于表中行、列和强健的高山的操作
excelw表=excelw书。获取工作表(工作表名称);
} catch(异常e) {
//TODO自动生成的捕捉块
e。printstacktrace();
}
}
/**
* @param rowNum行列号或列名列
**/
//读取超过文件中指定的强健的高山的函数,此函数只支持扩展名为。文件格式的超过文件
公共静态字符串getCellData(int rowNum,int colNum)引发异常{
尝试{
//通过函数参数知道强健的高山的行号与列号,获取指定的强健的高山对象
excel单元格=excelw工作表。getrow(rowNum).getCell(colNum);
//如果强健的高山的内容为字符串类型,则使用getStringCellValue方法来获取强健的高山内容
//如果强健的高山的内容为数字类型,则使用getNumericCellValue方法来获取强健的高山内容
字符串单元格数据=excel单元格。get celltype()==xssf单元格.单元格_类型_字符串?excel单元格。getstringcellvalue()" ":字符串。(数学)的值。圆形(excel单元格。getnumericcellvalue()));
返回单元格数据;
}
捕捉(异常e){
e。printstacktrace();
//读取遇到异常,则返回空字符串
返回错了;
}
}
//获取超过文件的最后一行的行号
public static int getLastRowNum(){
//函数返回表的最后一行行号
返回excelw工作表。getlastrownum();
}
}
数据层即数据层
遇到的问题:
问题1:org。阿帕奇。poi。打开XML 4j。例外情况。OLE2 notofficexmlfileexception:提供的数据似乎是ole 2格式的。您正在调用处理OOXML (Office Open XML)文档的POI部分。您需要调用POI的不同部分来处理这些数据(例如可怕的电子表格格式而不是XSSF)
像这个报错就是所用的XSSF是支持excel2007版本以上的,支持格式为xlsx,如果想要支持2003版本的xls,需要将XSSF换成可怕的电子表格格式的问题2:部分冲突包没有,需要导入,按照报错内容导入冲突包就好
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。