python+selenium+unnitest如何进行pom分层
时间: 2024-02-02 21:05:31 浏览: 258
POM(Page Object Model)是一种页面对象模型,可以将页面的元素和方法封装在一个类中。这种模式可以使代码更加模块化,易于维护和扩展。在使用Python+Selenium+unittest进行自动化测试时,可以按照以下步骤进行POM分层:
1. 创建基础页面类(BasePage),包含一些基本的Selenium操作方法,如打开网页、关闭网页、查找元素等。
2. 创建每个页面的类(PageClass),每个页面类都继承基础页面类(BasePage),并包含该页面的元素和操作方法。例如,如果有一个登录页面,可以创建一个LoginPage类,其中包含用户名、密码、登录按钮等元素,以及输入用户名、输入密码、点击登录等操作方法。
3. 在测试用例中,先实例化一个页面类的对象,然后调用该页面的操作方法,对页面进行操作。这样做可以将测试用例的逻辑与页面的元素和操作分离开来,使得代码更加清晰和易于维护。
以下是一个简单的示例:
```python
# BasePage.py
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
class BasePage:
def __init__(self, driver):
self.driver = driver
def open_url(self, url):
self.driver.get(url)
def close_browser(self):
self.driver.quit()
def find_element(self, locator):
return WebDriverWait(self.driver, 10).until(EC.presence_of_element_located(locator))
# LoginPage.py
from selenium.webdriver.common.by import By
from BasePage import BasePage
class LoginPage(BasePage):
username_locator = (By.NAME, "username")
password_locator = (By.NAME, "password")
login_button_locator = (By.ID, "login-button")
def enter_username(self, username):
self.find_element(self.username_locator).send_keys(username)
def enter_password(self, password):
self.find_element(self.password_locator).send_keys(password)
def click_login_button(self):
self.find_element(self.login_button_locator).click()
# TestLogin.py
import unittest
from selenium import webdriver
from LoginPage import LoginPage
class TestLogin(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Chrome()
self.driver.maximize_window()
def test_login(self):
login_page = LoginPage(self.driver)
login_page.open_url("http://www.example.com/login")
login_page.enter_username("testuser")
login_page.enter_password("testpassword")
login_page.click_login_button()
# do some assertions here
def tearDown(self):
self.driver.quit()
if __name__ == "__main__":
unittest.main()
```
在上面的示例中,BasePage类包含了一些基本的Selenium操作方法,LoginPage类继承了BasePage类,并包含了登录页面的元素和操作方法。在测试用例中,首先实例化了LoginPage类的对象,然后调用了其操作方法实现了登录功能。
阅读全文
相关推荐


















