selenium PO设计模式
时间: 2023-07-12 21:38:25 浏览: 92
Selenium之PageObject设计模式。
5星 · 资源好评率100%
Page Object(PO)是一种常用的 Selenium 设计模式,它的基本思想是将每个页面看作是一个对象,通过封装页面的元素和操作,实现测试代码和页面的解耦,提高测试脚本的可读性、可维护性和可重用性。下面是一个简单的示例:
```python
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 LoginPage:
def __init__(self, driver):
self.driver = driver
self.username = (By.NAME, "username")
self.password = (By.NAME, "password")
self.login_button = (By.XPATH, "//button[@type='submit']")
def open(self, url):
self.driver.get(url)
def input_username(self, value):
element = WebDriverWait(self.driver, 10).until(
EC.presence_of_element_located(self.username)
)
element.clear()
element.send_keys(value)
def input_password(self, value):
element = WebDriverWait(self.driver, 10).until(
EC.presence_of_element_located(self.password)
)
element.clear()
element.send_keys(value)
def click_login_button(self):
element = WebDriverWait(self.driver, 10).until(
EC.element_to_be_clickable(self.login_button)
)
element.click()
class HomePage:
def __init__(self, driver):
self.driver = driver
self.user_info = (By.XPATH, "//a[@class='user-info']")
def get_user_info(self):
element = WebDriverWait(self.driver, 10).until(
EC.presence_of_element_located(self.user_info)
)
return element.text
driver = webdriver.Chrome()
login_page = LoginPage(driver)
login_page.open("https://example.com/login")
login_page.input_username("username")
login_page.input_password("password")
login_page.click_login_button()
home_page = HomePage(driver)
user_info = home_page.get_user_info()
print(user_info)
driver.quit()
```
在这个示例中,我们将登录页面和首页分别封装为 LoginPage 和 HomePage 两个类,每个类都包含了页面的元素和操作。LoginPage 类包含了用户名输入框、密码输入框和登录按钮,而 HomePage 类包含了用户信息。测试脚本只需要创建相应的对象,然后调用对象的方法即可完成测试过程,而不需要关心页面元素和操作的细节。这样可以大大简化测试脚本,并提高代码的可读性和可维护性。
需要注意的是,Page Object 设计模式需要对页面的元素和操作进行封装,这需要一定的技巧和经验。在实践中,可以根据具体的项目需求和实际情况来进行设计和优化。
阅读全文