For AI agents: the complete documentation index is available at https://rstest.rs/zh/llms.txt, the full documentation bundle is available at https://rstest.rs/zh/llms-full.txt, and this page is available as Markdown at https://rstest.rs/zh/api/runtime-api/browser-mode/keyboard.md.
close
  • 简体中文
  • 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。
    import { page } from '@rstest/browser';
    
    await page.getByLabel('Search').focus();
    await page.keyboard.press('ControlOrMeta+A');
    await page.keyboard.press('Backspace');
    await page.keyboard.press('Escape', { delay: 20 });

    tab

    • 类型: (options?: BrowserKeyboardTabOptions) => Promise<void>

    通过原生 Tab 导航移动焦点。焦点顺序由浏览器决定,包括跳过禁用的元素。

    BrowserKeyboardTabOptions 支持:

    • shift?: boolean:使用 Shift+Tab 向后移动焦点,默认为 false。
    import { page } from '@rstest/browser';
    import { expect } from '@rstest/core';
    
    await page.getByLabel('Email').focus();
    await page.keyboard.tab();
    await expect.element(page.getByLabel('Password')).toBeFocused();
    await page.keyboard.tab({ shift: true });
    await expect.element(page.getByLabel('Email')).toBeFocused();

    tab() 等价于 press('Tab');tab({ shift: true }) 等价于 press('Shift+Tab')。导航到组件或 iframe 边界时,焦点可能移出其范围,行为由浏览器决定。

    BrowserKeyboard、BrowserKeyboardPressOptions 和 BrowserKeyboardTabOptions 均从 @rstest/browser 导出。