传统线性自动化,多个用例脚本中需要反复的定位同一个元素,PO设计模式可以减少这部分频繁定位元素的代码量
小节:减少重复代码的冗余,便于UI页面频繁变更下的元素定位维护。
将改写的脚本转为PO设计模式
首先在项目里创建一个 python package 命名为 pages ,然后在 pages 创建一个模块 base_page.py 用来作为第一层的 base_page核心层 。
如下图:
构建基础的 BasePage 层
尝试构建最基础的 base_page 层,代码示例如下:
coding:utf-8
from selenium import webdriver
class BasePage(object):
“”"
1、第一层 - 核心层-BasePage层,定义一个所有页面都继承的page层
2、对将要使用的 selenium 的底层方法进行二次封装
“”"
def init(self, driver, path=None): # 构造函数,类的初始化
“”"
为了方便编写将 driver 初始化,
先使用 “self.driver = webdriver.Chrome()” 后续改为 self.driver = driver
“”"
self.driver = webdriver.Chrome()
self.driver = driver
self.driver.implicitly_wait(5) # 定义全局的默认加载时间
self.load_page(path) # 访问并加载网页
def load_page(self, path=None): # 访问并加载网页,如果 path 不为空的话,直接传给 driver.get() 访问
if path is not None:
self.driver.get(path)
def by_xpath(self, xpath): # 二次封装 selenium 的 xpath 元素定位
return self.driver.find_element_by_xpath(xpath)
def js_click(self, xpath): # JavaScript 定位元素,并执行 click
self.driver.execute_script(‘arguments[0].click()’, self.by_x