webdriver

WebDriver browser automation protocol. Use for cross-browser testing.

7 stars

Best use case

webdriver is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

WebDriver browser automation protocol. Use for cross-browser testing.

Teams using webdriver should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/webdriver/SKILL.md --create-dirs "https://raw.githubusercontent.com/G1Joshi/Agent-Skills/main/skills/testing/webdriver/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/webdriver/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How webdriver Compares

Feature / AgentwebdriverStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

WebDriver browser automation protocol. Use for cross-browser testing.

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# WebDriver

WebDriver is the W3C standard protocol for controlling web browsers. It is the underlying technology behind Selenium, Appium, WebdriverIO, and more. Even if you use a high-level tool, understanding WebDriver helps debug low-level issues.

## When to Use

- **Protocol Knowledge**: Understanding why `stale element reference` happens.
- **Custom Integration**: Building your own test runner or browser automation tool.
- **WebdriverIO**: A popular Node.js implementation of the WebDriver protocol (often used over raw Selenium).

## Quick Start (WebdriverIO)

```javascript
import { remote } from "webdriverio";

const browser = await remote({
  capabilities: {
    browserName: "chrome",
    "goog:chromeOptions": { args: ["headless", "disable-gpu"] },
  },
});

await browser.url("https://webdriver.io");
const title = await browser.getTitle();
console.log(title); // outputs: "WebdriverIO · Next-gen browser and mobile automation test framework for Node.js"

await browser.deleteSession();
```

## Core Concepts

### Client-Server Architecture

- **Client**: Your test script (Node/Java/Python).
- **Server**: The Browser Driver (chromedriver, geckodriver) or Grid.
- **Protocol**: REST-ish JSON commands (`POST /session/:id/element`).

### Stale Element Reference

A common error. You got a reference to a DOM element (ID: 123), but the page refreshed or JS updated the DOM. ID 123 is gone. You must find the element again.

## Best Practices (2025)

**Do**:

- **Use WebdriverIO (WDIO)**: If you want to use WebDriver in Node.js. It wraps the low-level protocol in a nice, synchronous-looking API.
- **Understand the network**: WebDriver is chatty (many HTTP requests). Running tests "remote" (e.g., SauceLabs) is slower than local due to latency.

**Don't**:

- **Don't mix protocols**: Don't confuse CDP (Puppeteer/Playwright) with WebDriver. They work differently.

## References

- [W3C WebDriver Spec](https://w3c.github.io/webdriver/)
- [WebdriverIO](https://webdriver.io/)