一、简介

  poium是一个基于Selenium/appium的Page Object测试库,最大的特点是简化了Page层元素的定义。

  项目地址:https://github.com/SeldomQA/poium

  安装命令:pip install poium

Page Object设计模式(二)——poium测试库-LMLPHP

二、基本使用

  使用poium重写baidu_page.py

 from poium import Page, PageElement

 class BaiduPage(Page):
"""百度Page层,百度页面封装操作到的元素"""
search_input = PageElement(id_="kw")
search_button = PageElement(id_="su")

Page Object设计模式(二)——poium测试库-LMLPHP

测试用例中的使用如下:

 from selenium import webdriver
import unittest
from time import sleep
from files.PO.baidu_page import BaiduPage class TestBaiduSearch(unittest.TestCase): @classmethod
def setUpClass(cls):
cls.driver = webdriver.Chrome()
cls.base_url = "https://www.baidu.com" def test_baidu_search_case(self):
page = BaiduPage(self.driver)
page.get("https://www.baidu.com")
page.search_input("selenium")
page.search_button.click()
sleep(2)
self.assertEqual(page.get_title(), "selenium_百度搜索") @classmethod
def tearDownClass(cls):
cls.driver.quit() if __name__ == '__main__':
unittest.main(verbosity=2)

三、更多方法

1.支持的定位方法

  八种定位方法:

 from poium import Page, PageElement

 class SomePage(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')

Page Object设计模式(二)——poium测试库-LMLPHP

2.设置元素超时时间

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

 from poium import PageElement, Page

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

Page Object设计模式(二)——poium测试库-LMLPHP

3.设置元素描述

  当一个Page类中定义的元素非常多时,必须通过注释来增加可读性,这时可使用describe参数。

 from poium import PageElement, Page

 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="用户信息")

Page Object设计模式(二)——poium测试库-LMLPHP

  需要强调的是,describe参数并无实际意义,只是增加了元素定义的可读性。

  poium极大地简化了Page层的定义,除此之外,还提供了很多的API,如PageSelect类简化饿了下拉框的处理等。

05-29 01:27