操作

Playwright 可以与 HTML 输入元素进行交互,比如文本输入,多选框,单选按钮,选择选项,鼠标点击,键入字符,按键和快捷键以及上传文件和聚焦元素。


文本输入

填写表单字段的最简单的方式是使用 locator.fill(value, **kwargs)。它聚焦元素,然后使用输入的文本触发输入(input)事件。它对 <input><textarea>[contenteditable] 元素有效。


多选框和单选按钮

选中和取消选中多选框或单选按钮的最简单的方式是使用 locator.set_checked(checked, **kwargs)。此方法可用于 input[type=checkbox]input[type=radio][role=checkbox] 元素。


选择选项

使用 locator.select_option(**kwargs) 选择 <select> 元素中的一个或多个选项。你可以指定要选择的选项值(value)或标签(label)。可选择多个选项。


鼠标点击

执行简单的人类点击。

在底层,这和其它与指针相关的方法:

强制点击

有时,应用程序使用非平凡逻辑,使用拦截点击的其它元素悬停在元素上覆盖它。这种行为与元素被覆盖,点击被分派到其它地方的 Bug 无法区分。如果你知道发生的是这种情况,那么你可以绕过可操作性(actionability)检查,强制点击:

程序化点击

如果你对在真实条件下测试应用程序不感兴趣,想通过任何可能的方式模拟点击。你可以通过使用 locator.dispatch_event(type, **kwargs) 在元素上简单地分派点击事件的方式,触发 HTMLElement.click() 行为:


键入字符

使用 locator.type(text, **kwargs) 像用户使用真正的键盘一样,一个字符一个字符地向字段中键入。

该方法会发出所有必要的键盘事件,包括所有 keydownkeyupkeypress 事件。你甚至可以指定按键之间的延迟(delay),来模拟真正用户行为。

注意

大多数时候,page.fill(selector, value, **kwargs) 已经够用。当页面上有特殊的键盘处理时,才需要键入字符。


按键和快捷键

locator.press(key, **kwargs) 方法聚焦选中的元素,产生单个击键。它接受键盘事件的 keyboardEvent.key 属性中发出的逻辑键名:

简单版本生成单个字符。字符是大小写敏感的,因此 "a""A" 会生成不同的结果。

也支持 "Control+o""Control+Shift+T" 之类的快捷键。当指定修改器时,在随后的键被按下期间,修改器被按下,并被保持。

注意仍然需要在 Shift-A 中指定大写字母 A 来生成大写字符。Shift-a 生成小写字符,就好像你已切换 CapsLock 一样。


上传文件

你可以使用 locator.set_input_files(files, **kwargs) 方法选择要上传的文件。它期望第一个参数指向 "file" 类型的输入元素(input element)。可以通过数组传递多个文件。如果文件路径是相对的,那么相对于当前工作目录解析它们。空数组清除选择的文件。

如果你手中没有输入元素(它是动态创建的),你可以处理 page.on("filechooser") 事件,或在操作之前使用相应的等待方法。


聚焦元素

对于处理聚焦事件的动态页面,你可以使用 locator.focus(**kwargs) 聚焦给定的元素。


拖拽和丢弃

你可以使用 locator.drag_to(target, **kwargs) 执行拖拽&丢弃操作。该方法会:

手工拖拽

如果你想精确地控制拖拽操作,那么使用低级方法,比如 locator.hover(**kwargs)mouse.down(**kwargs)mouse.move(x, y, **kwargs) mouse.up(**kwargs)

注意

如果页面依赖 dragover 事件,在浏览器中触发它至少需要两次鼠标移动。为可靠地发起第二次鼠标移动,重复两次 mouse.move(x, y, **kwargs)locator.hover(**kwargs)。操作序列应该是:悬停在拖拽元素,按下鼠标,悬停在丢弃元素,第二次悬停在丢弃元素,松开鼠标。