python selenium实现PO模型代码
时间: 2023-09-08 14:05:17 浏览: 100
### 回答1:
好的,以下是一个简单的 Python Selenium PO (页面对象) 模型的代码示例:
```
from selenium import webdriver
class LoginPage:
def __init__(self, driver):
self.driver = driver
self.url = "https://www.example.com/login"
self.username_input_id = "username"
self.password_input_id = "password"
self.login_button_id = "login_btn"
def navigate(self):
self.driver.get(self.url)
def enter_username(self, username):
self.driver.find_element_by_id(self.username_input_id).send_keys(username)
def enter_password(self, password):
self.driver.find_element_by_id(self.password_input_id).send_keys(password)
def click_login(self):
self.driver.find_element_by_id(self.login_button_id).click()
if __name__ == "__main__":
driver = webdriver.Firefox()
login_page = LoginPage(driver)
login_page.navigate()
login_page.enter_username("user123")
login_page.enter_password("pass456")
login_page.click_login()
```
代码实现了一个页面对象模型,可以完成登录的流程。代码定义了一个 `LoginPage` 类,该类提供了登录页面上的元素的定位和操作,如输入用户名、输入密码、点击登录按钮等。
### 回答2:
Python Selenium可以通过使用Page Object模式(PO模式)来更好地组织和管理测试代码。
Page Object模式是将页面对象和页面操作分开的设计模式。具体实现步骤如下:
1. 首先,需要将页面对象定义为Python类。每个页面对象可以包含页面的元素定位和相关操作的方法。
例如,假设有一个登录页面,可以创建一个名为LoginPage的类,包含用户名输入框、密码输入框和登录按钮的元素定位和相关操作的方法。具体代码可如下:
```python
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
class LoginPage:
def __init__(self, driver):
self.driver = driver
def enter_username(self, username):
self.driver.find_element(By.ID, "username").send_keys(username)
def enter_password(self, password):
self.driver.find_element(By.ID, "password").send_keys(password)
def click_login_button(self):
self.driver.find_element(By.ID, "login-button").click()
def login(self, username, password):
self.enter_username(username)
self.enter_password(password)
self.click_login_button()
def get_alert_message(self):
alert = WebDriverWait(self.driver, 10).until(
EC.presence_of_element_located((By.CLASS_NAME, "alert-message"))
)
return alert.text
```
2. 在测试用例中,可以通过实例化页面对象,调用其相关方法进行测试。
例如,假设要测试登录功能,可以创建一个名为LoginTest的类,包含一个测试用例方法。
```python
from selenium import webdriver
class LoginTest:
def setup(self):
self.driver = webdriver.Chrome()
self.login_page = LoginPage(self.driver)
def test_login_success(self):
self.login_page.login("username", "password")
alert_message = self.login_page.get_alert_message()
assert "登录成功" in alert_message
def teardown(self):
self.driver.quit()
if __name__ == "__main__":
test = LoginTest()
test.setup()
test.test_login_success()
test.teardown()
```
通过以上步骤,将页面对象和页面操作分离开,可以提高代码的可维护性和复用性。同时,也可以更好地管理和组织自动化测试代码。
阅读全文