【框架】PageObject(一)
1.目的:为了将元素的find方法和业务逻辑分开来。如果元素的页面位置发生了变化,只需改动一个文件,而不影响业务的实现。
2.原理:一般一个页面对应一个class,在class里描述所有要用到的webelement。通过PageFactory.initWebElement(Webdriver d,this)的方法来实例化页面对象。
每次在用到一个元素的时候,会在当前页面搜索,如果第二次再用到这个元素,则会再次寻找。如果一个元素在页面的任何地方都不会变,则可以再@FindBy方法的下方写上@CacheLookup,则会被缓存起来,这样可以提高搜索效率
3.例子:登录163邮箱,在163的写信页面,先点击写信按钮,然后在收件人里填写对应信息
//【1】元素类---登录页面
public class Login163VO {
@FindBy(id="idInput")
public WebElement username ;
@FindBy(id="pwdInput")
public WebElement password ;
@FindBy(id="loginBtn")
public WebElement loginBtn ;
public Login163VO(WebDriver driver){
PageFactory.initElements(driver,this);
}
}
//【2】元素类---写信页面
public class Send163VO {
//通过xpath方法,找到写信按钮
@FindBy(xpath="//div[@id='dvNavTop']/ul/li[2]")
//把该按钮缓存起来
@CacheLookup
public WebElement xiexin ;
//通过xpath方法,找到收件人输入框。这个按钮是点击写信按钮后才显示的。但是使用PageObject方法不受影响,因为在使用到该元素时,才会去搜索,并且调用该元素,是在点击了写信按钮以后
@FindBy(xpath="//div[@id='divComposeto']/div/div/div[2]/div/input")
public WebElement shoujianren;
//使用PageObject方法,实例化页面元素
public Send163VO(WebDriver driver){
PageFactory.initElements(driver, this);
}
}
//【3】测试类--使用了testng
public class Test163 {
WebDriver driver = null;
Login163VO t = null;
Send163VO s = null;
@BeforeClass
public void setUp(){
driver= new FirefoxDriver();
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
driver.get("http://mail.163.com");
}
@Test
public void testLogin163() throws InterruptedException {
t = new Login163VO(driver);
t.username.sendKeys("name@163.com");
t.password.sendKeys("pass");
t.loginBtn.click();
Thread.sleep(3000);
}
@Test
public void testXiexin163(){
s = new Send163VO(driver);
s.xiexin.click();
s.shoujianren.sendKeys("name@126.com");
}
@Test(enabled=false)//不会执行的类,暂时没有实现好的类
public void tearDown(){
driver.quit();
}
}
【框架】PageObject(一)的更多相关文章
- python+selenium 自动化测试实战
一.前言: 之前的文章说过, 要写一篇自动化实战的文章, 这段时间比较忙再加回家过11一直没有更新博客,今天整理一下实战项目的代码共大家学习.(注:项目是针对我们公司内部系统的测试,只能内部网络访问, ...
- UI自动化测试框架(项目实战)python、Selenium(日志、邮件、pageobject)
其实百度UI自动化测试框架,会出来很多相关的信息,不过就没有找到纯项目的,无法拿来使用的:所以我最近就写了一个简单,不过可以拿来在真正项目中可以使用的测试框架. 项目的地址:https://githu ...
- 【Python + ATX】之uiautomator2 PageObject模式自动化框架学习
参考文章: 感谢:cynic (linpengcheng) <ATX 基于 ATX-Server 的 UI 自动化测试框架> <ATX-uiautomator2 实现 webview ...
- Appium+python自动化(三十二)- 代码写死一时爽,框架重构火葬场 - PageObject+unittest(超详解)
简介 江湖有言:”代码写死一时爽,框架重构火葬场“,更有人戏言:”代码动态一时爽,一直动态一直爽
- 关于selenium的CI、框架……
这段时间除了项目测试外,主要在做web自动化的事情,大致总结一下吧,总体的设计模式pageobject+pagefactory+testng的数据驱动,项目用maven来构建,使用jenkins集成, ...
- 2013 最新的 play web framework 版本 1.2.3 框架学习文档整理
Play framework框架学习文档 Play framework框架学习文档 1 一.什么是Playframework 3 二.playframework框架的优点 4 三.Play Frame ...
- web自动化框架之一介绍与环境搭建(Selenium+Eclipse+Python)
看到一篇环境搭建文章,详细又全面,这里就不一一重复了 http://blog.csdn.net/dyllove98/article/details/9390649 其它: 1.框架介绍 整个 ...
- selenium基础框架的封装(Python版)
一.常用函数的封装 在使用selenium做web自动化测试的过程中,经常会碰到各种各样的问题,比如: 1.页面加载比较慢时,selenium查找元素抛出异常,导致脚本运行中止 2.写完脚本后发现代码 ...
- PageObject设计模式,在selenium自动化测试中的运用
PageObject设计模式1. Web自动化测试框架(WebTestFramework)是基于Selenium框架且采用PageObject设计模式进行二次开发形成的框架. 2. web测试时,建议 ...
随机推荐
- 小程序模板template
WXML提供模板(template),可以在模板中定义代码片段,然后在不同的地方调用. 定义模板 使用 name 属性,作为模板的名字.然后在<template/>内定义代码片段,如: & ...
- PostegreSQL模板数据库
模板数据库 模板数据库就是创建新database时,PostgreSQL会基于模板数据库制作一份副本,其中会包含所有的数据库设置和数据文件. CREATE DATABASE 实际上是通过拷贝一个现有的 ...
- EditText取消焦点
EditText取消焦点: 在父容器添加: android:focusable="true" android:focusableInTouchMode="true&quo ...
- 如何编写一个d.ts文件
这篇文章主要讲怎么写一个typescript的描述文件(以d.ts结尾的文件名,比如xxx.d.ts). 2018.12.18更新说明: 1.增加了全局声明的原理说明. 2.增加了es6的import ...
- Python 读写操作Excel —— 安装第三方库(xlrd、xlwt、xlutils、openpyxl)
数据处理是 Python 的一大应用场景,而 Excel 则是最流行的数据处理软件.因此用 Python 进行数据相关的工作时,难免要和 Excel 打交道. 如果仅仅是要以表单形式保存数据,可以借助 ...
- Asp.net core 学习笔记 ( ef core )
更新 : 2018-11-26 这里记入一下关于 foreignKey cascade action 默认情况下如果我们使用 data annotation required + foreginkey ...
- MySQL命令行的备份与还原
备份的语法; mysqldump -uroot -p shop> 数据库路径 还原的语法: mysql -uroot -p 具体数据库(shop0609)< 数据库路径
- OSPF - 1,基础
1,OSPF知识点a)在OSPF中,如果是环回口宣告进OSPF,不管宣告时配置的是多少位掩码,路由器收到的都是32位.(EIGRP配了多少位就收到多少位).好处:EIGRP中,在PING包发起时如果在 ...
- Dropout的理解
https://zhuanlan.zhihu.com/p/23178423 这篇知乎文章讲的比较好,在神经网络权重取平均值和减少神经元之间复杂的共适应关系两个方面分析了为什么dropout可以解决过拟 ...
- 数据库连接的WEB登录界面的实现
要实现此功能,需要电脑安装JAVA EE.SQL Server 2008和Tomcat等软件,并进行配置环境成功. 对这门课的希望和自己的目标: 希望:可以完全掌握老师所讲的内容. 目标:能够完整的做 ...