Page Object举例
时间: 2023-08-03 09:53:10 浏览: 95
Page类应用实例
假设我们有一个网站,其中包含一个登录页面和一个主页面。首先,我们创建一个名为 LoginPage 的页面类,该类封装了登录页面的逻辑,包括元素的定位、操作和验证等。代码示例如下:
```python
from selenium.webdriver.common.by import By
from selenium.webdriver.remote.webdriver import WebDriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
class LoginPage:
def __init__(self, driver: WebDriver):
self.driver = driver
self.username_input = (By.ID, "username")
self.password_input = (By.ID, "password")
self.login_button = (By.ID, "login-button")
def visit(self):
self.driver.get("https://example.com/login")
def login(self, username, password):
WebDriverWait(self.driver, 10).until(EC.presence_of_element_located(self.username_input))
self.driver.find_element(*self.username_input).send_keys(username)
self.driver.find_element(*self.password_input).send_keys(password)
self.driver.find_element(*self.login_button).click()
def is_login_successful(self):
try:
WebDriverWait(self.driver, 10).until(EC.url_contains("https://example.com/home"))
return True
except:
return False
```
LoginPage 类包含了以下几个方法:
1. `__init__`:初始化方法,用于定义页面元素的定位器。
2. `visit`:打开登录页面的方法。
3. `login`:用于输入用户名和密码并点击登录按钮的方法。
4. `is_login_successful`:用于验证登录是否成功的方法。
接下来,我们创建一个名为 TestLogin 的测试用例类,该类使用 LoginPage 类进行登录并验证登录是否成功。代码示例如下:
```python
from selenium import webdriver
import unittest
from LoginPage import LoginPage
class TestLogin(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Chrome()
self.login_page = LoginPage(self.driver)
def test_login_successful(self):
self.login_page.visit()
self.login_page.login("username", "password")
self.assertTrue(self.login_page.is_login_successful())
def tearDown(self):
self.driver.quit()
if __name__ == "__main__":
unittest.main()
```
TestLogin 类包含了以下几个方法:
1. `setUp`:初始化方法,用于创建 WebDriver 对象和 LoginPage 对象。
2. `test_login_successful`:测试用例方法,用于执行登录并验证登录是否成功。
3. `tearDown`:清理方法,用于关闭浏览器。
通过使用 Page Object 模式,我们可以将页面的逻辑和测试用例分离开来,使测试代码更加简洁、可读和易于维护。
阅读全文