web自动化PO模式项目-操作、用例、数据分离

本文介绍了PO模式的思想,通过将页面元素定位和行为封装在Page类中,实现了页面对象与测试用例的分离。使用unittest框架,创建PageObjects包封装页面功能,TestCases包编写测试用例,TestDatas包管理测试数据。这样,当页面元素变化时,只需修改对应的Page类,提高了代码重用性和维护性。同时,文章提到了setUpClass和tearDownClass在测试用例中的应用以及数据管理的策略。
摘要由CSDN通过智能技术生成

一、PO模式的思想

  1. 原理:
    1. 将页面的元素定位和元素行为封装成一个page类
    2. 类的属性:元素的定位
    3. 类的行为:元素的操作
  2. 页面对象和测试用例分离
  3. 测试用例:
    1. 调用所需要页面对象中的行为,组成测试用例
    2. 测试用例中,只需要含有页面函数的调用和断言,不应该出现元素定位等其他的操作,如果写测试用例中出现需要其他的额外的操作,可以想办法封装到页面对象或者元素定位中
  4. 好处:
    1. 当某个页面的元素发生变化,只需要修改该页面对象中的代码即可,测试用例不需要修改
    2. 提高代码的重用率,结构清晰,维护代码容易
    3. 测试用例发生变化时,不需要或者只需要修改少数页面对象代码即可

二、使用unittest框架实现PO模式

  1. 新建一个包,命名为PageObjects,包中用来封装各个页面的功能
    页面对象封装的类中,函数用来实现页面的功能,在类的初始化函数中,使用传参(driver)的方式完成,页面只需要实现对应功能即可,具体传入什么样的测试,在测试用例的前置条件中实现,可以提高函数的重用率

页面对象封装函数:login_page.py

#_-*- coding:utf-8 -*-

from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
class LoginPage:

    def __init__(self,driver):
        self.driver = driver
    #登录
    def login(self,username,passwd):
        #输入用户名
        #输入密码
        #点击登录
        name_text="username"
        password_text="password"
        login_buttom="loginBtn"
        WebDriverWait(self.driver,10).until(EC.visibility_of_element_located((By.ID,name_text)))
        self.driver.find_element_by_id(name_text).send_keys(username)
        self.driver.find_element_by_id(password_text).send_keys(passwd)
        self.driver.find_element_by_id(login_buttom).click()
    #注册
    def register(self):
        register_button = "//form[@id='login_form']//p[@class='have']/a"
        self.driver.find_element_by_xp
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值