Pythium
基于 Python 的 Page Factory(github) 设计模式测试库, 类似于Java的Page Factory模式,旨在减少代码冗余,简单易用,具有高度的可扩展能力。
- 支持以@annotation的方式定义元素
- 支持同一个元素多种定位方式
- 支持动态的定位方式
安装
pip install pythium
用法
-
使用单个定位元素
find_by
ios_find_by
android_find_by
find_by
用于Web
平台,ios_find_by
和android_find_by
分别适用于苹果和安卓平台;例子:
find_by(css=".search")
-
使用多个定位元素,元素之间为
or
的关系,按顺序查找:find_all
ios_find_all
android_find_all
例子:
@find_all(by(css=".icon-logo1"), by(id="icon"))
;首先查找元素
by(css=".icon-logo1")
, 如果找到则返回WebElement
;如果没找到则通过
by(id="icon")
继续找, 如果找到则返回WebElement
;最后没找到则抛出异常
Exception
. -
Page object
代码样例:from pythium import find_by, android_find_by, ios_find_by from pythium import find_all, ios_find_all, android_find_all, Page, by from appium.webdriver.webelement import WebElement as MobileElement from selenium.webdriver.remote.webelement import WebElement from typing import Any, List class LoginPage(Page): @find_by(css=".search") @ios_find_by(ios_predicate='value == "Search something"') @android_find_by(android_uiautomator='resourceId("com.app:id/search_txtbox")') def search_input(self) -> WebElement: ... @property @find_by(css=".search") @ios_find_by(ios_predicate='value == "Search something"') @android_find_by(android_uiautomator='