题记: 之前公司项目比较稳定, 在进行了系统测试,想用自动化测试进行冒烟测试,或者对主要功能进行测试, 因此用到了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 设计模式的更多相关文章

  1. Python+Selenium框架设计--- Page Object Model

    POM(Page Object Model):页面对象模型,POM是一种最近几年非常流行的自动化测试模型,或者思想,POM不是一个框架,就是一个解决问题的思想.采用POM的目的,是为了解决前端中UI变 ...

  2. Page Object设计模式(二)——poium测试库

    一.简介 poium是一个基于Selenium/appium的Page Object测试库,最大的特点是简化了Page层元素的定义. 项目地址:https://github.com/SeldomQA/ ...

  3. web端自动化——selenium Page Object设计模式

    Page Object设计模式的优点如下: ①    减少代码的重复. ②    提高测试用例的可读性. ③    提高测试用例的可维护性,特别是针对UI频繁变化的项目. 当为Web页面编写测试时,需 ...

  4. selenium+Python(Page Object 设计模式实例)

    以下实例演示了采用了page Object设计模式的方式登录qq空间: 1.创建基础类page:在初始方法__init__()定义驱动的(driver),基本url(base_url)和超时时间(ti ...

  5. Python+selenium之Page Object设计模式

    Page Object是selenium自动化测试项目开发实践的最佳设计模式之一,他主要提现在对界面交互细节的封装,这样可以使测试案例隔你给加关注于业务而非界面细节,从而提高测试案例的可读性. Pag ...

  6. Selenium+java - Page Object设计模式

    前言 Page Object(页面对象)模式,是Selenium实战中最为流行,并且被自动化测试同学所熟悉和推崇的一种设计模式之一.在设计测试时,把页面元素定位和元素操作方法按照页面抽象出来,分离成一 ...

  7. Selenium(十九):unittest单元测试框架(五) Page Object设计模式

    1. Page Object设计模式 Page Object是Selenium自动化测试项目开发实践的最佳设计模式之一,它主要体现在对界面交互细节的封装,这样可以使测试方案更关注于业务而非界面细节.从 ...

  8. Selenium 2自动化测试实战39(Page Object设计模式)

    Page Object设计模式 Page object是selenium自动化测试项目开发时间的最佳设计模式之一,主要体现在对界面交互细节的封装. 1.认识page object优点如下:1.减少代码 ...

  9. Page Object 设计模式介绍

    Page Object 是 Selenium 自动化测试项目开发实践的最佳设计模式之一,Page Object 的主要体现于对界面交互细节的封装,这样可以使测试案例更关注与业务而非界面细节,提高测试案 ...

随机推荐

  1. 关于sharekey 与Open system+wep

    Open_system+wep与open_system的区别在于: 对于开放系统认证,在设置时启用WEP,此时,WEP用于在传输数据时加密,对于认证没有任何作用. 抓包open_system+wep: ...

  2. C#WinFrom导出Excel

    采用的是以DataGridView的形式导出,使用NPOI.dll 1.由于使用的是DataGridView,所以类需要创建在From的Project下,DLL导入NPOI 2.代码如下 using ...

  3. SSH开发环境整合

    第一步:Spring开发环境搭建 1.1: 添加配置文件和相应spring-3.2-core.Jar 核心包 配置文件 <?xml version="1.0" encodin ...

  4. C++为什么不可以把一个数组直接赋值给另一个数组

    今天好奇一个问题, int a[3] = {1,2,3]; int b[3]; b=a; 编译器报错, 网上找了一圈, 大概明白: C++就是如此设定的, 数组不能直接赋值, 可以使用std::cop ...

  5. The Preliminary Contest for ICPC Asia Shanghai 2019 L. Digit sum

    题目:https://nanti.jisuanke.com/t/41422 思路:预处理 #include<bits/stdc++.h> using namespace std; ][]= ...

  6. 一个用于格式化和处理数字的javascript库----Numeral.js

    npm地址:https://www.npmjs.com/package/numeral 1.转化成百分比: numeral(num).format('0.00%')

  7. SQL 使用分区方法

  8. IDEA中Springboot静态文件加载(热部署)

    Springboot项目静态文件加载 昨天写项目的时候碰到一个问题,就是静态文件css无法读取到项目中,我仔细思考了下,总结了下,可能有两个问题 1.页面未加载更新 这个可能性非常大,Chrome就是 ...

  9. #333 Div2 Problem B Approximating a Constant Range (尺取 && RMQ || 尺取 && multiset)

    题目链接:http://codeforces.com/contest/602/problem/B 题意 :给出一个含有 n 个数的区间,要求找出一个最大的连续子区间使得这个子区间的最大值和最小值的差值 ...

  10. luoguP1774 最接近神的人_NOI导刊2010提高(02)x

    P1774 最接近神的人_NOI导刊2010提高(02) 题目描述 破解了符文之语,小FF开启了通往地下的道路.当他走到最底层时,发现正前方有一扇巨石门,门上雕刻着一幅古代人进行某种活动的图案.而石门 ...