po框架里怎么封装登录页,和怎么在用例调用
时间: 2024-03-08 19:50:43 浏览: 25
使用PO框架封装登录页,可以将登录页中的元素和操作封装到一个Page类中,例如:
```python
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_input = (By.ID, 'username')
self.password_input = (By.ID, 'password')
self.login_button = (By.ID, 'login-button')
self.error_message = (By.ID, 'error-message')
def enter_username(self, username):
self.driver.find_element(*self.username_input).send_keys(username)
def enter_password(self, password):
self.driver.find_element(*self.password_input).send_keys(password)
def click_login_button(self):
self.driver.find_element(*self.login_button).click()
def get_error_message(self):
return self.driver.find_element(*self.error_message).text
def login(self, username, password):
self.enter_username(username)
self.enter_password(password)
self.click_login_button()
# 等待跳转到下一页
WebDriverWait(self.driver, 10).until(EC.title_contains('Next Page'))
```
在用例中调用登录页,可以先实例化LoginPage类,然后调用该类中的方法完成登录操作,例如:
```python
from selenium import webdriver
from LoginPage import LoginPage
driver = webdriver.Chrome()
login_page = LoginPage(driver)
login_page.login('username', 'password')
# 在这里可以继续编写其他用例步骤
```
在实际使用中,可以将登录操作封装到BasePage类中,其他Page类可以继承该类,从而避免重复编写登录代码,例如:
```python
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
def login(self, username, password):
login_page = LoginPage(self.driver)
login_page.enter_username(username)
login_page.enter_password(password)
login_page.click_login_button()
# 等待跳转到下一页
WebDriverWait(self.driver, 10).until(EC.title_contains('Next Page'))
class LoginPage(BasePage):
def __init__(self, driver):
super().__init__(driver)
self.username_input = (By.ID, 'username')
self.password_input = (By.ID, 'password')
self.login_button = (By.ID, 'login-button')
self.error_message = (By.ID, 'error-message')
def enter_username(self, username):
self.driver.find_element(*self.username_input).send_keys(username)
def enter_password(self, password):
self.driver.find_element(*self.password_input).send_keys(password)
def click_login_button(self):
self.driver.find_element(*self.login_button).click()
def get_error_message(self):
return self.driver.find_element(*self.error_message).text
```
这样,在其他Page类中就可以直接调用BasePage类中的login方法完成登录操作了,例如:
```python
from selenium import webdriver
from LoginPage import LoginPage
driver = webdriver.Chrome()
home_page = HomePage(driver)
home_page.login('username', 'password')
# 在这里可以继续编写其他用例步骤
```