基于 selenium/appium 的 Page Objects 设计模式测试库。
- 极大的简化了Page层的元素定义。
- 同时支持selenium和appium
- 通过JavaScript扩展了selenium API
- 对原生 API 无损
pip install:
> pip install poium
If you want to keep up with the latest version, you can install with github repository url:
> pip install -U git+https://github.com/SeldomQA/poium.git@master
在
0.6.0
版本提供了NewPageElement
类,用新的方式重新实现了PageElement
类的大部分功能。 推荐使用NewPageElement
类。
具体差异参考
from poium import Page, Element
from selenium import webdriver
class BaiduIndexPage(Page):
search_input = Element(name='wd')
search_button = Element(id_='su')
driver = webdriver.Chrome()
page = BaiduIndexPage(driver)
page.get("https://www.baidu.com")
page.search_input.send_keys("poium")
page.search_button.click()
driver.quit()
poium还提供了一套JavaScript封装的API。
from poium import Page, CSSElement
from selenium import webdriver
class BaiduIndexPage(Page):
search_input = CSSElement('#kw')
search_button = CSSElement('#su')
driver = webdriver.Chrome()
page = BaiduIndexPage(driver)
page.get("https://www.baidu.com")
page.search_input.set_text("poium")
page.search_button.click()
driver.quit()
- 只支持
css
定位,所以不需要指定定位方式。 - 更多的元素操作,例如:
remove_attribute()
、clear_style()
... 等。
支持appium的例子。
from poium import Page, NewPageElement
from appium import webdriver
class CalculatorPage(Page):
number_1 = NewPageElement(id_="com.android.calculator2:id/digit_1")
number_2 = NewPageElement(id_="com.android.calculator2:id/digit_2")
add = NewPageElement(id_="com.android.calculator2:id/op_add")
eq = NewPageElement(id_="com.android.calculator2:id/eq")
# APP定义运行环境
desired_caps = {
'deviceName': 'Android Emulator',
'automationName': 'appium',
'platformName': 'Android',
'platformVersion': '7.0',
'appPackage': 'com.android.calculator2',
'appActivity': '.Calculator',
}
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
page = CalculatorPage(driver)
page.number_1.click()
page.add.click()
page.number_2.click()
page.eq.click()
driver.quit()
请阅读 wiki
参考项目:https://github.com/eeaston/page-objects
参考项目已经不再维护,我阅读了原项目代码,虽然只有100多行,但设计非常精妙。本项目在此基础上进行开发。
原项目名:https://pypi.org/project/selenium-page-objects/
本项目的核心是 Page Objects设计模式, 于是取了 PO,同时支持selenium/appium,于是取了 ium,那么新的项目命名为:poium。