自动化测试框架——页面对象模型POM & Selenium

1 自动化测试框架

应用框架的作用:

1、降低冗余

2、便于维护和理解

3、高内聚低耦合

4、便于公司管理、便于团队管理(统一规范等)

自动化测试设计模式一般基于两种设计模式:关键字驱动、页面对象模型

页面对象模型:简称POM/PO,将系统的所有业务流程,以页面的对象进行封装和处理,在进行调用,实现业务自动化测试。

结构分层(数据与代码分离,逻辑代码和测试代码分离)

  1. 基类:提供基础的函数,给所有页面对象执行
  2. 页面对象类:封装各个页面,生成页面对象,便于调用
  3. 测试用例层:基于POM的所有内容实现的测试用例
  4. 测试数据层:提供所有测试过程中所需的数据内容

WebUI自动化测试是基于selenium来实现的

基于关键字驱动,所有元素信息保存在文件中;基于POM,所有元素信息与页面对象关联

示例

目录清单

(1)基类

class BasePage:
    # 构造函数
    def __init__(self,driver):
        self.driver = driver

    # 访问URL
    def open(self, url):
        self.driver.get(url)

    # 退出
    def quit(self):
        self.driver.quit()

    # 元素定位
    def locator(self, loc):
        return self.driver.find_element(*loc)

    # 输入
    def input(self, loc, text):
        self.locator(loc).send_keys(text)

    # 点击
    def click(self, loc):
        self.locator(loc).click()

(2)页面对象类

 登录页面对象类

"""
    登录页面对象类
"""
from selenium import webdriver
from selenium.webdriver.common.by import By
from base.base_page import BasePage

class LoginPage(BasePage):
    # URL
    url = "http://39.98.138.157/shopxo/index.php?s=/index/user/logininfo.html"

    # 页面元素
    username = (By.NAME,'accounts')
    pwd = (By.NAME,'pwd')
    button = (By.XPATH,'/html/body/div[4]/div/div[2]/div[2]/form/div[3]/button')

    # 登录业务实现
    def login(self,user,pwd):
        self.open(self.url)
        self.input(self.username,user)
        self.input(self.pwd,pwd)
        self.click(self.button)

(3)测试用例层

"""
    测试用例层,将所有的测试流程以及测试用例的设计,都放置这个层级中
"""
import pytest
from selenium import webdriver
from common.yaml_util import YamlUtil
from page_object.login_page import LoginPage


class TestCases:
    # 测试用例
    @pytest.mark.parametrize('data', YamlUtil().get(r'../data/login.yml'))
    def test_login(self, data):
        driver = webdriver.Chrome(r"E:\chromedriver_win32\chromedriver.exe")
        lp = LoginPage(driver)
        lp.login(data[&#
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值