Skip to content

Input

  • click(selector, options?) and click(x, y, options?)
  • clickAt(x, y)
  • type(text, options?)
  • press(key, options?)
  • shortcut(shortcut | shortcut[], options?)
  • fill(selector, value, options?)
  • selectOption(selector, value, options?)
  • setChecked(selector, checked, options?)
  • dragFromToSelectors(fromSelector, toSelector, options?)
  • dragFromToPoints(fromX, fromY, toX, toY, options?)
  • dragStartAt(x, y)
  • dragMoveTo(x, y, options?)
  • dragReleaseAt(x?, y?)
  • drag(...) (legacy compatibility alias)
  • scroll(dx, dy)
  • scrollTo(selector, options?)
  • resize(width, height)

Use perCharacterDelayMs to control typing speed.

await view.type("hello", { perCharacterDelayMs: 120 });

Lower values type faster. 0 sends characters as fast as possible.

Use direct form helpers when you want deterministic value updates without per-character typing.

await view.fill("#email", "alice@example.com");
await view.selectOption("#role", "admin");
await view.setChecked("#agree", true);

press stays available for explicit key/modifier control. shortcut adds a parser for compact combos.

await view.press("C", { ctrlKey: true });
await view.shortcut("Ctrl+C");
await view.shortcut(["Ctrl+A", "Escape", "Tab"]);

Use explicit selector- or point-based drag helpers for clarity.

await view.dragFromToSelectors("#item", "#drop-zone", { steps: 16, durationMs: 200 });
await view.dragFromToPoints(120, 180, 360, 180, { steps: 8, durationMs: 120 });

For full control over drag lifecycle and release timing:

await view.dragStartAt(120, 180);
await view.dragMoveTo(360, 180, { steps: 10, durationMs: 160 });
await view.dragReleaseAt();

The input layer is built on top of CDP and DOM helpers, so element resolution stays consistent across click and scroll operations.