最强自动化测试框架Playwright(4)-控件操作

文本输入

适用于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"))

猜你喜欢

转载自blog.csdn.net/seanyang_/article/details/132247420
今日推荐