Skip to content
虫师 edited this page Nov 28, 2018 · 13 revisions

首先,欢迎使用selenium-page-objects库,selenium-page-objects基于Selenium实现Page Objects设计模式。仅仅对Selenium的部分API进行封装,努力简化API的使用。

你可以将selenium-page-objects与任何Python单元测试框架(unittest、pytest)结合使用.

1、简单的例子。

创建一个简单的LoginPage,并使用LoginPage完成登录。这是会用到PageObjectPageElement

from page_objects import PageObject, PageElement
from selenium import webdriver

class LoginPage(PageObject):
    username = PageElement(id_='username')
    password = PageElement(id_='password')
    login_button = PageElement(css='input[type="submit"]')

driver = webdriver.Chrome()
page = LoginPage(driver)
page.get("https://login.xxx.com")
page.username.send_keys("username")
page.username.send_keys("password")
page.login_button.click()

3、支持的定位方式

selenium-page-objects同样支持8中定位方式。

from page_objects import PageObject, PageElement

class LoginPage(PageObject):
    elem_id = PageElement(id_='id')
    elem_name = PageElement(name='name')
    elem_class = PageElement(class_='class')
    elem_tag = PageElement(tag='input')
    elem_link_text = PageElement(link_text='this_is_link')
    elem_partial_link_text = PageElement(partial_link_text='is_link')
    elem_xpath = PageElement(xpath='//*[@id="kk"]')
    elem_css = PageElement(css='#id')

3、设置元素超时时间

通过timeout参数设置超时时间,默认为10s。

from page_objects import PageObject, PageElement

class BaiduPage(PageObject):
    search_input = PageElement(id_='kw', timeout=5)
    search_button = PageElement(id_='su', timeout=30)

5、设置元素描述。

describe 参数并无实际意义,当你页面元素很多时,用它来增加可读性。

class LoginPage(PageObject):
    """
    登录page类
    """
    username = PageElement(css='#loginAccount', describe="用户名")
    password = PageElement(css='#loginPwd', describe="密码")
    login_button = PageElement(css='#login_btn', describe="登录按钮")
    user_info = PageElement(css="a.nav_user_name > span", describe="用户信息")

6、定义一组元素

需要定位一组元素,可以使用 PageElements

from page_objects import PageObject, PageElement, PageElements

class BaiduPage(PageObject):
    search_key = PageElement(id_='kw')
    search_button = PageElement(id_='su')
    # 定位一组元素
    search_result = PageElements(xpath="//div/h3/a")

更多API,请查看右侧 Pages 列表。

Clone this wiki locally