selenium自动化测试框架PO设计模式

整理一下 selenium 自动化测试实践中使用较多的 PO(PageObject)设计模式

面向对象的特性:封装\继承\多态.在自动化中一样适用,selenium 自动化测试中有一个名字常常被提及 PageObject(思想与面向对象的特性相同),通过 PO 模式可以大大提高测试用例的维护效率

传统测试脚本的弊端:

测试脚本分离,维护成本高

可扩展性差

复用性低等

 

PageObject 设计模式

selenium 自动化测试框架 PO 设计模式

PO 的核心要素:

在 PO 模式中抽象封装成一个BasePage 类,该基累应该拥有一个只实现 webdriver 实例的属性.

每个一个 page 都继承 BasePage,通过 driver 来管理本 page 中元素,讲 page 中的操作封装成一个个的方法.

TestCase 继承 unittest.Testcase 类,并且依赖 page 类,从而实现相应的测试步骤.

 

例:

1.页面元素(登录页面)

from selenium.webdriver.common.by import By

class loginPageLocator:

    # 用户名输入框
    user_input = (By.XPATH,'//input[@name="username"]')
    # 密码输入框
    passwd_input = (By.XPATH,'//input[@name="password"]')
    # 登录按钮
    login_button = (By.XPATH,'//button[@class="el-button el-button--primary"]')
    # 错误提示 - 登录表单区域
    form_error_info = (By.XPATH,'//div[@class="el-form-item__error"]')
    # 登录页弹框 - 标题
    login_box_title = (By.XPATH,'//span[text()="确定登出"]')
    # 登录页弹框 - 文本
    login_box_text = (By.XPATH,'//p[text()="你已被登出,可以取消继续留在该页面,或者重新登录"]')
    # 登录页弹框 - 重新登录
    login_box_relog = (By.XPATH,'//button[@class="el-button el-button--default el-button--small el-button--primary "]')
    # 登录页弹框 - 取消
    login_box_cancel = (By.XPATH,'//button[@class="el-button el-button--default el-button--small"]')
    # 登录页弹框 - 关闭
    login_box_close = (By.XPATH,'//i[@class="el-message-box__close el-icon-close"]')

2.页面元素(首页)

from selenium.webdriver.common.by import By

class indexPageLocator:
    
    # 右上角用户名
    user_link = (By.XPATH,'//li[@class="logout"]')

3.关键字封装(基础操作)

"""
1.生成执行日志;测试用例的执行日志
2.测试用例的任何一行代码失败,都希望能在日志当中看到异常信息,并且生成失败的网页截图
3.精简一下我的 pageobjects 页面

测试用例 = 页面对象(步骤+断言) + 测试数据
页面对象 = 页面行为 + 页面元素定位
页面行为 = selenium webdrive基本 API{查找元素\等待\点击\输入\清除\文本获取\属性获取}组合起来的

对 WebDrive 的基础函数封装一下.加入日志\异常处理\失败截图
BasePage 具备以上三点
"""

from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import logging,time,datetime
from Common import file_path
from Common.testLogging import MyLog

class basePage:

    def __init__(self,driver):
        self.driver = driver

    # 等待元素可见
    def wait_eleVisible(self,loc,timeout&#
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值