Python —— UI自动化之Page Object模式

1、Page Object模式简介

1、二层模型

        Page Object Model(页面对象模型), 或者也可称之为POM。在UI自动化测试广泛使用的一种分层设计 模式。核心是通过页面层封装所有的页面元素及操作,测试用例层通过调用页面层操作组装业务逻辑。

Python —— UI自动化之Page Object模式_第1张图片

1、实战 

目录如下:

Python —— UI自动化之Page Object模式_第2张图片

home_page.py文件的内容:

from selenium.webdriver.common.by import By

class HomePage:
    login_link_locator = (By.LINK_TEXT, '登录')

    def click_login_link(self,driver):
        # 前面加*号是解包的操作,因为login_link_locator是元组
        driver.find_element(*self.login_link_locator).click()

login_page.py文件的内容:

from time import sleep
from selenium import webdriver
from selenium.webdriver.common.by import By


class LoginPage:
    #属性->元素定位信息(元素定位方法+元素定位值)-元组类型
    phone_input_locator = (By.XPATH,'//input[@placeholder="请输入手机号/用户名"]')
    pwd_input_locator = (By.XPATH,'//input[@placeholder="请输入密码"]')
    login_button_locator = (By.CLASS_NAME,'login-button')

    #操作->元素行为,登录操作
    def page_login(self,driver,phone,pwd):
        # *self.phone_input_locator 前面的*号是解包使用的
        driver.find_element(*self.phone_input_locator).send_keys(phone)
        driver.find_element(*self.pwd_input_locator).send_keys(pwd)
        sleep(2)
        driver.find_element(*self.login_button_locator).click()

登录案例 - PO.py的文件内容:

from selenium import webdriver
from d6_JavaScript处理.testcases.home_page import HomePage
from d6_JavaScript处理.testcases.login_page import LoginPage

driver = webdriver.Chrome()
driver.maximize_window()
driver.get("http://mall.banan.com:3344/")
HomePage().click_login_link(driver)

LoginPage().page_login(driver,"1723693766728","ydgcdlcb")

2、三层模型

        基本的PO分层包括页面层与用例层,但是在编写页面层代码时会发现一个问题:页面中存在非常多相同 的操作方法,比如都需要等待元素、获取元素属性/文本信息、页面滚动等等,每个页面层类都需要有相 同的代码,代码存在非常多冗余。我们可以把这些【公共】的页面操作方法给提取出来放到一个类中进 行维护,其他的页面类共用该类中的操作方法即可(通过继承实现)。

Python —— UI自动化之Page Object模式_第3张图片

UI自动化断言:
        断言是自动化测试不可缺少的部分,当我们使用测试脚本对业务逻辑进行操作时,需要检查交互操作之 后结果的正确性,此时需要通过断言机制来进行验证。

        Pytest测试框架内置丰富的断言,通过assert语句即可,常见的断言方法比较包括:

  • 比较相等
assert a == b
  • 比较大小(大于/小于/大于等于/小于等于)
assert a > b
  • 内容包含/内容不包含
assert a in b
  • 验证表达式是否为真
assert condition
UI自动化常见的断言条件包括:
  • 通过当前页面的URL地址

  • 通过当前页面的标题
  • 通过当前页面的提示文本信息
  • 通过当前页面的某些元素变化/显示

一句话总结:通过肉眼观察页面的变化检查

2、PO模式的优点

1、提高测试用例的可读性

2、提高测试用例可维护性

3、减少代码重复

你可能感兴趣的:(自动化,运维)