文本输入
适用于input、textarea、其他可编辑内容的元素。
# Text input
page.get_by_role("textbox").fill("Peter")
# Date input
page.get_by_label("Birth date").fill("2020-02-02")
# Time input
page.get_by_label("Appointment time").fill("13:15")
# Local datetime input
page.get_by_label("Local time").fill("2020-03-02T05:15")
单选框复选项
对单选框复选框进行勾选,使用is_checked()方法判断选中状态。
适用于input[type=checkbox]、
input[type=radio]、
[role=checkbox]
# Check the checkbox
page.get_by_label('I agree to the terms above').check()
# Assert the checked state
assert page.get_by_label('Subscribe to newsletter').is_checked() is True
# Select the radio button
page.get_by_label('XL').check()
下拉框选择
可以根据value或者label来选择下拉框,也可以进行多选。
# Single selection matching the value
page.get_by_label('Choose a color').select_option('blue')
# Single selection matching the label
page.get_by_label('Choose a color').select_option(label='Blue')
# Multiple selected items
page.get_by_label('Choose multiple colors').select_option(['red', 'green', 'blue'])
鼠标点击
可以对元素进行单击,双击、右键点击、组件键单击、悬浮、按照坐标单击。
# Generic click
page.get_by_role("button").click()
# Double click
page.get_by_text("Item").dblclick()
# Right click
page.get_by_text("Item").click(button="right")
# Shift + click
page.get_by_text("Item").click(modifiers=["Shift"])
# Hover over element
page.get_by_text("Item").hover()
# Click the top left corner
page.get_by_text("Item").click(position={ "x": 0, "y": 0})
强制点击
page.get_by_role("button").click(force=True)
程序化点击
page.get_by_role("button").dispatch_event('click')
键入字符
逐个在文本框输入字符,模拟用户使用键盘进行操作。
# Type character by character
page.locator('#area').type('Hello World!')
此方法将发出所有必需的键盘事件,可以在按键之间指定可选,以模拟真实的用户行为
也传入delay参数,以较慢的速度输入
element.type(\"world\", delay=100) # types slower, like a user
在输入文本后,可以对元素发出键盘按键事件,如按下Enetr,
element = page.get_by_label(\"Password\")
element.type(\"my password\")
element.press(\"Enter\")
按键和快捷键
# Hit Enter
page.get_by_text("Submit").press("Enter")
# Dispatch Control+Right
page.get_by_role("textbox").press("Control+ArrowRight")
# Press $ sign on keyboard
page.get_by_role("textbox").press("$")
locator.press() 方法聚焦所选元素并生成单个击键。它接受键盘事件的 keyboardEvent.key 属性中发出的逻辑键名:
Backquote, Minus, Equal, Backslash, Backspace, Tab, Delete, Escape,
ArrowDown, End, Enter, Home, Insert, PageDown, PageUp, ArrowRight,
ArrowUp, F1 - F12, Digit0 - Digit9, KeyA - KeyZ, etc.
- 您也可以指定要生成的单个字符,例如 或 。
"a"
"#"
- 还支持以下修改快捷方式:。
Shift, Control, Alt, Meta
简单版本生成单个字符。此字符区分大小写,因此 和 将产生不同的结果。"a"
"A"
# <input id=name>
page.locator('#name').press('Shift+A')
# <input id=name>
page.locator('#name').press('Shift+ArrowLeft')
上传文件
可以使用 locator.set_input_files() 方法选择要上传的输入文件。它期望第一个参数指向类型为 .可以在数组中传递多个文件。如果某些文件路径是相对的,则相对于当前工作目录解析它们。空数组将清除选定的文件。"file"
# Select one file
page.get_by_label("Upload file").set_input_files('myfile.pdf')
# Select multiple files
page.get_by_label("Upload files").set_input_files(['file1.txt', 'file2.txt'])
# Remove all the selected files
page.get_by_label("Upload file").set_input_files([])
# Upload buffer from memory
page.get_by_label("Upload file").set_input_files(
files=[
{"name": "test.txt", "mimeType": "text/plain", "buffer": b"this is a test"}
],
)
焦点元素
对于处理焦点事件的动态页面,您可以使用 locator.focus() 聚焦给定元素。
拖放
可以使用 locator.drag_to() 执行拖放操作。此方法将:
- 将鼠标悬停在要拖动的元素上。
- 按鼠标左键。
- 将鼠标移动到将接收丢弃的元素。
- 松开鼠标左键。
page.locator("#item-to-be-dragged").drag_to(page.locator("#item-to-drop-at"))