Playwright基础学习——定位器

Locator是Playwright的精华所在。在Playwright以前,做Web自动化基本上都是用helium+selenium的组合,helium提供了很多好用的方法, 诸如模糊搜索、高亮等,然而在Playwright中,这些都是原生实现了。

出于工程性的考虑,本处不再介绍get_role等使用较少的方法。

一、用文本、CSS、Xpath定位一个元素

已经专栏上个文章介绍过了。

(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()

二、高亮和悬浮Hover一个元素

建议高亮方法只在调试时使用(Playwright有成熟跟踪机制,哪一步失败记录的非常清楚,建议非必要不要使用高亮方法)

locator.highlight()
locator.hover()

三、返回元素的实际HTML代码

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}
)

你可能感兴趣的:(学习)