page object 设计模式
基类设计
遵循面对对象设计模式
base.py
from selenium import webdriver
from plugins import Single, read_yaml
class BasePage:
def __init__(self):
# 确保浏览器同一时间只开启一个
self._driver = WebdriverCreator().get_browser()
# 根据继承树读取元素配置信息--排除BasePage和object
cls_list = [cls.__name__ for cls in self.__class__.mro()][:-2]
print(cls_list)
for cls in cls_list:
locators = read_yaml('conf/ui_locators.yml')[cls]
for k, v in locators.items():
setattr(self, k, v) # 批量赋值
def click(self, locator): # locator ['id','#email']
self._driver.find_element(*locator).click()
def input_text(self, locator, text):
self._driver.find_element(*locator).send_keys(text)
# 返回元素文本
def ele_text(self, locator):
return self._driver.find_element(*locator).text
# 点击多个元素
def click_multi(self, locators):
eles