当你提到"PO模式"时,我认为你在谈论"页面对象模式"(Page Object Pattern)。页面对象模式是一种软件测试自动化设计模式,用于将UI页面的功能和操作与测试代码分离,从而提高测试代码的可维护性和可读性。下面是一个用于封装页面对象模式基类的示例,你可以根据需要进行进一步定制和扩展。
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
class BasePage:
def __init__(self, driver):
self.driver = driver
self.wait = WebDriverWait(self.driver, 10)
def find_element(self, by, value):
return self.wait.until(EC.presence_of_element_located((by, value)))
def click(self, by, value):
element = self.find_element(by, value)
element.click()
def input_text(self, by, value, text):
element = self.find_element(by, value)
element.clear()
element.send_keys(text)
def get_text(self, by, value):
element = self.find_element(by, value)
return element.text
# 可以根据需要添加更多常用的操作方法,如选择下拉框、获取属性值等
class LoginPage(BasePage):
# 定义登录页面的元素定位信息
USERNAME_FIELD = (By.ID, 'username')
PASSWORD_FIELD = (By.ID, 'password')
LOGIN_BUTTON = (By.ID, 'login_button')
def login(self, username, password):
self.input_text(*self.USERNAME_FIELD, username)
self.input_text(*self.PASSWORD_FIELD, password)
self.click(*self.LOGIN_BUTTON)
class HomePage(BasePage):
# 定义首页页面的元素定位信息
WELCOME_MESSAGE = (By.ID, 'welcome_message')
def get_welcome_message(self):
return self.get_text(*self.WELCOME_MESSAGE)
# 在测试代码中,可以这样使用:
if __name__ == "__main__":
driver = webdriver.Chrome()
driver.get('https://example.com/login')
login_page = LoginPage(driver)
login_page.login('your_username', 'your_password')
home_page = HomePage(driver)
welcome_message = home_page.get_welcome_message()
print(welcome_message)
driver.quit()