zoukankan      html  css  js  c++  java
  • python_PageObject

    一。PageObject

     1.定义:

    是指UI界面上用于与用户进行交互的对象。它可以指整个页面,也可以指Page上的某个区域,是Selenium自动化测试项目开发实践的最佳设计模式之一。

    - PageObject 页面对象。 会把某个网页(app页面)页面封装成对象。 
    - 对象
      - 属性。 元素定位器, URL , 标题, (DOM)
      - 方法。 元素定位,点击,(做了某个动作,执行了某步操作)

    2.PageObject 原则

    1)页面动作:使用到什么行为就封装什么行为。

    2)封装的页面操作的返回值

      -一般返回self,或者其他的页面对象

      -如果需要获取某个元素或者属性,直接返回元素本身或者属性。

      -如果一个操作可能有多个结果,根据结果封装成多个方法。

    3.Pageobject优势

    1)可维护性强。(页面的属性和方法分开写后,页面标签改变只需要修改元素值就成)

    2)可读性强。(PO模式封装的函数名或者类名本身就是以具体操作命名的)

    3)扩展性强。(有新功能需要实现时,po模式层级清晰新增更加方便)

    4)可复用性强。(已经写过的方法可以重复使用)

    5)页面操作和页面操作分离。

    二。使用pageobject模式设计用例

    1.用例编写

    1)初始化页面

    2)调用页面逻辑操作,目的是获取实际结果

    3)结果

    2.数据分组

    使用parametrize做数据驱动用法:

    @pyetst.mark.parametrize("这里自定义调用名称",“这里是需要数据驱动的数据”)

    1)分组的依据:测试步骤的不一致

    2)保存用例,不要通过excel去管理(pytest数据驱动模式引起的,后面详细解释)

    3)用例保存:1.使用py文件;2.使用yaml文件

    示例:这里我使用的是列表中嵌套字典保存数据,这里最好是使用元组进行管理数据,原因后续补充

     

    3.locator分层 

    1)By -- 定位尽量使用 By 方式去定位 (find_element(By.CLASS_NAME,value))

    1.使用方法:

    #定位方法与对应的value

    ele=(By.CLASS_NAME,"su")

    find_element(*ele)

    好处:

    1.直接调用源码中的方法,避免转换的错误。

    源码:

     2。不使用By

    方法:

    #定位方法与value

    ele={"by":"class name","value":"su"}

    #调用

    find_element(**ele)

    缺陷:

    1.需要注意类似于class_name的by值,中间需要空格才能转换成功 直接使用方法一比较直接不容易出错误

    2)遇到tost提示时,不好定位使用断点的方式进行操作这样tost消息就不会消失了

    3)web 自动化测试用例实现的流程

    - 1, 准备前置后置, conftest
    - 2, 编写测试步骤:测试用例的函数注解, docstring
    - 3, 根据测试步骤封装页面行为。
    - 4, 调用页面行为,获取实际结果
    - 5, 断言

    4)等待

    显示等待的封装

    与隐性等待(implicitly_wait(time))的区别:

    1.隐性等待等待的是元素的加载

    2.显示等待等待的是动态文本(也就是看的到的:比如text文本)

    封装方法

    #locator 是定位元素的方法与value

    def wait_element_visible(self, locator, timeout=20, poll=0.5):
      """等待某个元素可见"""
      el = WebDriverWait(self.driver, timeout=timeout, poll_frequency=poll).until(
      expected_conditions.visibility_of_element_located(locator)
      )
    return el

    5)截图 --未完待续

  • 相关阅读:
    算法问题实战策略 JUMPGAME 记忆化搜索
    算法问题实战策略 TRIANGLEPATH 动态规划入门题
    poj 2785 4 Values whose Sum is 0
    poj 3276 Face The Right Way 递推
    acwing 883. 高斯消元解线性方程组
    acwing 861. 二分图的最大匹配 模板
    Leetcode 42 接雨水 双指针 空间换时间
    LeetCode 1290. 二进制链表转整数
    LeetCode 1291. 顺次数
    <挑战程序设计竞赛> poj 3320 Jessica's Reading Problem 双指针
  • 原文地址:https://www.cnblogs.com/newsss/p/13423754.html
Copyright © 2011-2022 走看看