-
Notifications
You must be signed in to change notification settings - Fork 142
Home
虫师 edited this page Oct 17, 2020
·
13 revisions
首先,欢迎使用poium库,poium基于Selenium/appium实现Page Objects设计模式的测试库。对Selenium/appium的部分API进行封装,努力简化API的使用。
你可以将poium与任何Python单元测试框架(unittest、pytest)结合使用.
创建一个简单的LoginPage,并使用LoginPage完成登录。这里会用到Page
和 PageElement
from poium import Page, PageElement
from selenium import webdriver
class LoginPage(Page):
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()
poium同样支持8种定位方式。
from poium import Page, PageElement
class LoginPage(Page):
elem_id = PageElement(id_='id')
elem_name = PageElement(name='name')
elem_class = PageElement(class_name='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')
通过timeout
参数设置超时时间,默认为10s。
from poium import Page, PageElement
class BaiduPage(Page):
search_input = PageElement(id_='kw', timeout=5)
search_button = PageElement(id_='su', timeout=30)
describe
参数并无实际意义,当你页面元素很多时,用它来增加可读性。
from poium import Page, PageElement
class LoginPage(Page):
"""
登录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="用户信息")
log
有时找不到元素或元素定位的很慢,打开log开关,可以看到更多信息。
from poium import Page, PageElement
class BaiduIndexPage(Page):
search_input = PageElement(name='wdss', describe="搜索输入框", log=True)
search_button = PageElement(id_='su', describe="搜索按钮", log=True)
执行日志:
2019-11-21 12:20:03,851 - INFO - 搜索输入框, 1 times search, ('name', 'wdss')
2019-11-21 12:20:08,883 - INFO - 搜索输入框, 2 times search, ('name', 'wdss')
2019-11-21 12:20:13,907 - INFO - 搜索输入框, 3 times search, ('name', 'wdss')
...
需要定位一组元素,可以使用 PageElements
。
from poium import Page, PageElement, PageElements
class BaiduPage(Page):
search_key = PageElement(id_='kw')
search_button = PageElement(id_='su')
# 定位一组元素
search_result = PageElements(xpath="//div/h3/a")
更多API,请查看右侧 Pages
列表。