Keyboard
page.keyboard 向当前获得焦点的元素发送原生键盘输入,可用于测试快捷键、键盘导航,以及会在元素之间移动焦点的交互。
locator.press() 会先聚焦匹配的元素,page.keyboard 则直接使用当前焦点,无需选择元素。在 headed 模式下,如果外层测试 UI 拿走了焦点,Rstest 会在开始输入前聚焦当前测试的 runner iframe。焦点移出 iframe 时,浏览器可能会清除其内部元素焦点;要继续向指定元素输入,请先显式聚焦该元素。
键盘输入共享浏览器页面的焦点和修饰键状态。依赖焦点的交互应顺序执行,并等待每次按键完成后再切换焦点或导航。如果其他任务在按键期间移动焦点,或 runner 在按键期间重载,后续事件会跟随浏览器的当前焦点,headed watch 更新也遵循这一行为。run 失效时,尚未开始的排队按键会被丢弃;已经开始的原生输入无法取消或回滚。
press
- 类型:
(key: string, options?: BrowserKeyboardPressOptions) => Promise<void>
按下并释放一个按键,或 Shift+ArrowLeft、ControlOrMeta+A 这样的组合键。使用 Playwright provider 时,按键名称遵循 Playwright 键盘语法。ControlOrMeta 在 macOS 上对应 Meta,在其他平台上对应 Control。组合键中的修饰键会在按键操作完成后释放。
BrowserKeyboardPressOptions 支持:
delay?: number:keydown 与 keyup 之间的间隔,单位为毫秒,默认为0。
tab
- 类型:
(options?: BrowserKeyboardTabOptions) => Promise<void>
通过原生 Tab 导航移动焦点。焦点顺序由浏览器决定,包括跳过禁用的元素。
BrowserKeyboardTabOptions 支持:
shift?: boolean:使用 Shift+Tab 向后移动焦点,默认为false。
tab() 等价于 press('Tab');tab({ shift: true }) 等价于 press('Shift+Tab')。导航到组件或 iframe 边界时,焦点可能移出其范围,行为由浏览器决定。
BrowserKeyboard、BrowserKeyboardPressOptions 和 BrowserKeyboardTabOptions 均从 @rstest/browser 导出。