Locator是Playwright的精华所在。在Playwright以前,做Web自动化基本上都是用helium+selenium的组合,helium提供了很多好用的方法, 诸如模糊搜索、高亮等,然而在Playwright中,这些都是原生实现了。
出于工程性的考虑,本处不再介绍get_role等使用较少的方法。
已经专栏上个文章介绍过了。
(1).通过nth进行数组选择多个匹配到的元素中的第N个(从0开始)
# 获取匹配到的第一个元素
firstEle = locator_element.nth(0)
# 直接获取第一个元素
firstEle = locator.first
(2).在已有一个元素的基础上,从其子树选择元素
pri_locator.locator(selector_or_locator)
(3).在已有一个元素的基础上,增加过滤条件,支持has(用定位器实现)和has_text(根据文本)
# 支持链式增加一个selector过滤器
old_element
.filter(has_text="必须要有这个文本")
.filter(has=page.get_by_placeholder("[email protected]"))
(4).计算匹配的元素数量
locator.count()
建议高亮方法只在调试时使用(Playwright有成熟跟踪机制,哪一步失败记录的非常清楚,建议非必要不要使用高亮方法)
locator.highlight()
locator.hover()
locator.inner_html()
locator.inner_text()
locator.input_value() # 获取input控件的输入值
ps:对于非原生组件,可能检测结果不准确,建议直接通过CSS属性值等参数校验。
locator.is_checked() # 检查元素是否选中
locator.is_disabled() # 检查元素是否禁用禁止操作
locator.is_editable() # 检查元素是否可编辑
locator.is_hidden() # 检查元素是否隐藏
locator.is_enabled() # 检查元素是否启用允许操作
locator.is_visible() # 检查元素是否可见
locator.scroll_into_view_if_needed()
# 只要value和标签任何一个匹配,就选择一个
locator.select_option("blue")
# 只要标签匹配,就选择一个
locator.select_option(label="blue")
# 把列表中的都选择
locator.select_option(value=["red", "green", "blue"])
# 选择单选框选中
locator.set_checked(True)
'''
以下是一般的方法
'''
# 取消选中
locator.uncheck()
# 选中
locator.check()
locator.set_input_files('myfile.pdf')
locator.set_input_files(['file1.txt', 'file2.txt'])
# 清空已选择的文件
locator.set_input_files([])
# 直接上传文件
locator.set_input_files(
files=[
{"name": "test.txt", "mimeType": "text/plain", "buffer": b"this is a test"}
],
)
locator.focus()
# 按下删除退格键
locator.press("Backspace")
'''
有以下参数:
0~9 A~Z
Backquote Minus Equal Backslash Backspace Tab Delete Escape ArrowDown End Enter Home Insert PageDown PageUp ArrowRight ArrowUp
Shift Control Alt Meta ShiftLeft
注意:单字符区分大小写,按下A和a是不一样的。
'''
locator.type("这是输入的内容")
locator.clear() # 清空文本框
# 直接拖拽
source.drag_to(target)
# 拖拽,加上元素相对偏移
source.drag_to(
target,
source_position={"x": 34, "y": 7},
target_position={"x": 10, "y": 20}
)