python+ selenium&APPium自动化 page Object 设计模式
题记: 之前公司项目比较稳定, 在进行了系统测试,想用自动化测试进行冒烟测试,或者对主要功能进行测试, 因此用到了PO模式 因此做个记录:
Page Object
Page Object模式是使用Selenium的广大同行最为公认的一种设计模式。在设计测试时,把元素和方法按照页面抽象出来,分离成一定的对象,然后再进行组织。
Page Object模式,创建一个对象来对应页面的一个应用。故我们可以为每个页面定义一个类,并为每个页面的属性和操作构建模型。体现在对界面交互细节的封装,测试在更上层使用页面对象,在底层的属性或者操作的更改不会中断测试。减少代码重复,提高测试代码的可读性和可维护性。
我理解就是:把重复用的代码封装成个方法 或者类,在维护脚本的时候只需要改一个地方,有点像解耦(请大神指教是这个意思吗?)
下面以登录为案例:使用的是unitest框架
image:放置每次执行用例的截图,方便调试
report:放置每次执行的测试报告
test_case:
-drvier:封装了driver类
-model:封装了从文件读取数据等一下工具类
-page_object:存放一些页面的元素和定位文件,base.py 把selenium的定位重新封装;
case1
case2 : 真正的测试用例
run_all_test 执行用例
主要思路:在driver.py 封装了driver的方法, myunit.py 调用driver方法,在case类中继承myunit 类 就等于每次用例都有生产driver

driver.py:
def browser():
desired_caps = {
'platformName':'Android',
'deviceName': '1f9XXXX08b',
'platformVersion':"5.1",
'appPackage':'com.XXXXXss',
'appActivity':'com.meXXXXXXXXs.activity.LoginActivity',
'unicodeKeyboard': True,
'resetKeyBoard': True,
"automationName":"uiautomator2"
}
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub',desired_caps)
time.sleep(10)
# d = driver.current_activity
# print(d)
return driver
myunit.py
import driver
class MyTest(unittest.TestCase):
def setUp(self):
self.driver = browser() #调用driver
self.driver.implicitly_wait(10)
def tearDown(self):
self.driver.quit()
login_case.py
class LoginTest(myunit.MyTest):
def test_login_user_null(self):
'''用户名为空'''
#配置IP地址
ipo = IPConfigPage(self.driver)
lpo = LoginPage(self.driver)
lpo.click_ip_btn()
ipo.ipconfig_action("127.0.0.1")
#配置登录信息
lpo.login_action("","")
result = driverwait.find_toast(self.driver, u'账号为空')
print(u"用户名和密码为空校验结果%s"%result)
function.insert_image(self.driver, "login_user_null.jpg")
最后总结:个人ui自动化测试局限性比较大,相对于接口自动化,俗话说越后介入成本越高,ui自动化属于中后期,需要在项目稳定情况,小公司很难用的上,如果遇到项目迭代快,需求变化大,维护成本过高。而接口自动化能更早介入测试较早介入测试,维护成本低,而且能部分解决安全问题,人力资源成本高相对
python+ selenium&APPium自动化 page Object 设计模式的更多相关文章
- Python+Selenium框架设计--- Page Object Model
POM(Page Object Model):页面对象模型,POM是一种最近几年非常流行的自动化测试模型,或者思想,POM不是一个框架,就是一个解决问题的思想.采用POM的目的,是为了解决前端中UI变 ...
- Page Object设计模式(二)——poium测试库
一.简介 poium是一个基于Selenium/appium的Page Object测试库,最大的特点是简化了Page层元素的定义. 项目地址:https://github.com/SeldomQA/ ...
- web端自动化——selenium Page Object设计模式
Page Object设计模式的优点如下: ① 减少代码的重复. ② 提高测试用例的可读性. ③ 提高测试用例的可维护性,特别是针对UI频繁变化的项目. 当为Web页面编写测试时,需 ...
- selenium+Python(Page Object 设计模式实例)
以下实例演示了采用了page Object设计模式的方式登录qq空间: 1.创建基础类page:在初始方法__init__()定义驱动的(driver),基本url(base_url)和超时时间(ti ...
- Python+selenium之Page Object设计模式
Page Object是selenium自动化测试项目开发实践的最佳设计模式之一,他主要提现在对界面交互细节的封装,这样可以使测试案例隔你给加关注于业务而非界面细节,从而提高测试案例的可读性. Pag ...
- Selenium+java - Page Object设计模式
前言 Page Object(页面对象)模式,是Selenium实战中最为流行,并且被自动化测试同学所熟悉和推崇的一种设计模式之一.在设计测试时,把页面元素定位和元素操作方法按照页面抽象出来,分离成一 ...
- Selenium(十九):unittest单元测试框架(五) Page Object设计模式
1. Page Object设计模式 Page Object是Selenium自动化测试项目开发实践的最佳设计模式之一,它主要体现在对界面交互细节的封装,这样可以使测试方案更关注于业务而非界面细节.从 ...
- Selenium 2自动化测试实战39(Page Object设计模式)
Page Object设计模式 Page object是selenium自动化测试项目开发时间的最佳设计模式之一,主要体现在对界面交互细节的封装. 1.认识page object优点如下:1.减少代码 ...
- Page Object 设计模式介绍
Page Object 是 Selenium 自动化测试项目开发实践的最佳设计模式之一,Page Object 的主要体现于对界面交互细节的封装,这样可以使测试案例更关注与业务而非界面细节,提高测试案 ...
随机推荐
- Codeforces1204C. Anna, Svyatoslav and Maps (贪心 + Floyd)
题目链接:传送门 题目大意: 给出n<=100的有向图,和路径p,求p的最短子序列v,使得依次经过v中所有点的路径为p. 思路: 题意其实就是让我们求路径上的一些关键点v,对于所有的关键点:vi ...
- 最简单的Android项目(NDK命令行编译)
Android的NDK编程需要下载NDK编译环境,可以从官网下载window64位版,然后解压到任意目录即可. NDK的实现其实是利用里Java的jni方法,所以前期的步骤可以参考jni的实现方法,只 ...
- java 基本包
1. import java.io.BufferedInputStream;import java.io.File;import java.io.FileInputStream;import java ...
- 十一、S3C2440 裸机 — GPIO
11.1 GPIO 介绍 11.1.1 GPIO 管脚 GPIO 即是输入输出端口,S3C2440A 包含了 130 个多功能输入/输出口引脚并且它们为如下显示的八个端口: 端口 A(GPA):25 ...
- element-ui + redis + mongo + nuxt
用户注册: let {username,password} = req.body; let u = await UserModel.findOne({username}); if(u){ res.js ...
- Python之网路编程利用multiprocessing开进程
一.multiprocessing模块介绍 python中的多线程无法利用CPU资源,在python中大部分情况使用多进程.python中提供了非常好的多进程包multiprocessing. mul ...
- APIview的请求生命周期源码分析
目录 APIview的请求生命周期源码分析 请求模块 解析模块 全局配置解析器 局部配置解析器 响应模块 异常处理模块 重写异常处理函数 渲染模块 APIview的请求生命周期源码分析 Django项 ...
- 【NOIP2016提高A组模拟10.15】最大化
题目 分析 枚举两个纵坐标i.j,接着表示枚举区域的上下边界, 设对于每个横坐标区域的前缀和和为\(s_l\),枚举k, 显然当\(s_k>s_l\)时,以(i,k)为左上角,(j,k)为右下角 ...
- 算法复习-a 到 z不完全排列生成
在网上看到这个题,觉得很有意思,也算是一种方法...但是复杂度同样很高,生成全排列本身需要很大复杂度. 题目:现在有 a 到 z 26 个元素, 编写程序打印 a 到 z 中任取 3 个元素的组合(比 ...
- VUE DIV模拟input框的基本处理
关键代码 <div class="dialog-main" :contenteditable= "editable" v-text="notic ...