跳转至

Page、Element 与 Elements 类

约 198 个字 63 行代码 预计阅读时间 1 分钟

类比

Page 类相当于测试的页面,Element 类相当于一个元素,Elements 类相当于一群元素。

代码示例

1
2
3
4
5
6
from poium import Page, Element

class BaiduPage(Page):
    input = Element(id_="kw", timeout=1, index=0, describe="搜索输入框")
    button = Element(id_="su", timeout=1, index=0, describe="搜索按钮")
    results = Elements(xpath="//div/h3/a", describe="搜索结果")
  1. 创建页面类继承 Page 类。
  2. 通过 Element 类定义元素。

Element 类参数

第一个参数:定位参数

支持所有 Selenium / appium 的定位方式。

# selenium
css = "xx"
id_ = "xx"
name = "xx"
xpath = "xx"
link_text = "xx"
partial_link_text = "xx"
tag = "xx"
class_name = "xx"

# appium
ios_uiautomation = "xx"
ios_predicate = "xx"
ios_class_chain = "xx"
android_uiautomator = "xx"
android_viewtag = "xx"
android_data_matcher = "xx"
android_view_matcher = "xx"
windows_uiautomation = "xx"
accessibility_id = "xx"
image = "xx"
custom = "xx"

其他参数

  • timeout: 设置超时检查次数,默认为 5
  • index: 设置元素索引,当你的定位方式默认匹配到多个元素时,默认返回第 1 个,即为 0
  • describe: 设置元素描述,默认为 undefined , 建议为每个元素增加描述。

Element 类方法

Selenium 操作

page.elem.clear()                       # 清空内容
page.elem.send_keys(value)              # 输入内容
page.elem.click()                       # 单击
page.elem.submit()                      # 提交表单
page.elem.tag_name                      # 标签名
page.elem.text                          # 元素文本
page.elem.size                          # 尺寸
page.elem.get_property(name)              # 元素属性
page.elem.get_attribute(name)             # 元素参数
page.elem.is_displayed()                # 是否显示
page.elem.is_selected()                 # 是否选中
page.elem.is_enabled()                  # 是否启用
page.elem.switch_to_frame()             # 切换到该框架(Selenium)
page.elem.move_to_element()             # 将鼠标放到该元素中间(Selenium)
page.elem.click_and_hold()              # 左键按住该元素(Selenium)
page.elem.double_click()                # 双击(Selenium)
page.elem.context_click()               # 右击(Selenium)
page.elem.drag_and_drop_by_offset(x, y) # 左键拖动元素若干距离,松开(Selenium)
page.elem.refresh_element(timeout=10)     # 刷新页面,重新获取元素(Selenium)

select 下拉操作

1
2
3
page.elem.select_by_value(value)        # 根据 value 值选择项(Selenium)
page.elem.select_by_index(index)        # 根据 index 属性选择项(Selenium)
page.elem.select_by_visible_text(text)  # 根据显示文本选择项(Selenium)

appium 操作

1
2
3
page.elem.set_text(keys)    # 输入文本(appium)
page.elem.location_in_view  # 返回字典,表示相对于视图的位置(appium)
page.elem.set_value(value)  # 设置值(appium)

模拟键盘操作

page.elem.input(text="")
page.elem.enter()
page.elem.select_all()
page.elem.cut()
page.elem.copy()
page.elem.paste()
page.elem.backspace()
page.elem.delete()
page.elem.tab()
page.elem.space()

Elements

返回一个列表,列表中每一项都是 Selenium 的页面元素对象