赞
踩
今天呢笔者想给大家来唠唠python+selenium的web自动化的PageObject模式解析及案例,废话就不多说了咱们直接进入正题。
Page Object(简称PO)模式,是Selenium实战中最为流行,并且是自动化测试中最为熟悉和推崇的一种设计模式。在设计自动化测试时,把页面元素和元素的操作方法按照页面抽象出来,分离成一定的对象,然后再进行组织。
做web自动化最头疼的一个问题,莫过于页面变化了,如果没有使用PO设计模式,页面一变化就意味着之前的元素定位甚至元素的操作方法不能用了,需要重新修改。你需要一个一个从测试脚本中把需要修改的元素定位方式、元素的操作方法找出来,然后一一地修改。这样的自动化脚本不但繁琐,维护成本也极高。
而page object模式就可以很好地解决这个问题,优点:
那到底什么是Page Object模式,见名知意,就是页面对象,在实际自动化测试中,一般对脚本分为三层:
除了以上三层,还有一个基础层,基础层主要是针对selenium的一些常用方法,根据实际业务需要进行二次封装,如点击、输入等操作加入一些等待、日志输入、截图等操作,方便以后查看脚本的运行情况及问题排查。
基础层类名一般命名为BasePage,后续的对象层操作元素时都继承这个基础类,下面以点击、输入为例:
- # basepage.py
- import os
- import time
- import datetime
- from selenium.webdriver.remote.webdriver import WebDriver
- from selenium.webdriver.support.wait import WebDriverWait
- from selenium.webdriver.support import expected_conditions as EC
- from common.logging import log
- from common.constant import IMG_DIR
-
-
- class BasePage:
-
- def __init__(self, driver: WebDriver):
- self.driver = driver
-
- def wait_ele_visible(self, loc, img_desc, timeout=20, frequency=0.5):
- """等待元素可见"""
- try:
- WebDriverWait(self.driver, timeout, frequency).until(EC.visibility_of_element_located(loc))
- log.info("等待:{} - 元素{}可见成功。".format(img_desc, loc))
- except:
- log.exception("等待:{} - 元素{}可见失败!".format(img
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。