{
  "data": {
    "similar": [
      {
        "grade": "BB",
        "json": "https://www.anchorterminal.com/tools/chrome-devtools-mcp.json",
        "name": "Chrome DevTools MCP",
        "score": 77,
        "shared": [
          "browser.control",
          "browser.debug"
        ],
        "slug": "chrome-devtools-mcp"
      },
      {
        "grade": "BB",
        "json": "https://www.anchorterminal.com/tools/puppeteer.json",
        "name": "Puppeteer",
        "score": 70.6,
        "shared": [
          "browser.control",
          "browser.debug"
        ],
        "slug": "puppeteer"
      },
      {
        "grade": "BB",
        "json": "https://www.anchorterminal.com/tools/browserless.json",
        "name": "Browserless",
        "score": 70.4,
        "shared": [
          "browser.control",
          "browser.debug"
        ],
        "slug": "browserless"
      },
      {
        "grade": "BB",
        "json": "https://www.anchorterminal.com/tools/steel.json",
        "name": "Steel",
        "score": 70.4,
        "shared": [
          "browser.control",
          "browser.debug"
        ],
        "slug": "steel"
      },
      {
        "grade": "B",
        "json": "https://www.anchorterminal.com/tools/rea.json",
        "name": "REA",
        "score": 69.7,
        "shared": [
          "browser.debug",
          "browser.control"
        ],
        "slug": "rea"
      },
      {
        "grade": "B",
        "json": "https://www.anchorterminal.com/tools/anchor-browser.json",
        "name": "Anchor Browser",
        "score": 67.3,
        "shared": [
          "browser.control",
          "browser.debug"
        ],
        "slug": "anchor-browser"
      }
    ],
    "tool": {
      "slug": "selenium",
      "name": "Selenium",
      "vendor": "Selenium project (Software Freedom Conservancy)",
      "vendorUrl": "https://www.selenium.dev",
      "kind": "sdk",
      "category": "browser",
      "summary": "Selenium is the open-source browser automation project behind the W3C WebDriver standard, with official bindings for Java, Python, C#, Ruby and JavaScript and a self-hosted Grid server that runs browsers on other machines.",
      "url": "https://www.anchorterminal.com/tools/selenium",
      "markdownUrl": "https://www.anchorterminal.com/tools/selenium.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/selenium.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/selenium.json",
      "repo": "https://github.com/SeleniumHQ/selenium",
      "license": "Apache-2.0",
      "transports": [
        "http"
      ],
      "packages": [
        {
          "registry": "pypi",
          "name": "selenium"
        },
        {
          "registry": "npm",
          "name": "selenium-webdriver"
        },
        {
          "registry": "maven",
          "name": "org.seleniumhq.selenium:selenium-java"
        },
        {
          "registry": "nuget",
          "name": "Selenium.WebDriver"
        },
        {
          "registry": "rubygems",
          "name": "selenium-webdriver"
        }
      ],
      "auth": "none",
      "authNotes": "No account or key for the bindings, which run on the owner's machine. Grid accepts sessions without authentication unless both `--username` and `--password` are set, and Nodes register with a shared `--registration-secret` when one is configured. Site logins live in the browser profile or cookies the script sets.",
      "pricing": "free",
      "pricingNotes": "Free and open source under Apache-2.0, with nothing to buy and no hosted service from the project. Grid is self-hosted. Commercial clouds that run Selenium sessions are separate companies (checked 2026-10-14).",
      "priceSummary": "Free · OSS",
      "where": "local",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the docs, llms.txt or the source (checked 2026-10-14).",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": 34542,
        "npmWeekly": 1807038,
        "pypiWeekly": 6884385,
        "asOf": "2026-10-14"
      },
      "docsUrl": "https://www.selenium.dev/documentation/",
      "llmsTxt": "https://www.selenium.dev/llms.txt",
      "capabilities": [
        "browser.control",
        "browser.debug"
      ],
      "tags": [
        "official",
        "local",
        "open-source",
        "browser",
        "sdk",
        "python",
        "java",
        "javascript",
        "dotnet",
        "ruby",
        "llms-txt",
        "no-auth",
        "webdriver"
      ],
      "lastRelease": "2026-10-09",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 73.6,
        "grade": "BB",
        "agentReady": true,
        "rank": 90,
        "ranked": true,
        "rankOf": 1076,
        "categoryRank": 4,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 70,
          "maintenance": 94,
          "payments": 60,
          "reliability": 90,
          "schema": 89,
          "security": 43,
          "transparency": 74
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "breakdown": [
          {
            "key": "reliability",
            "name": "Reliability",
            "weight": 16,
            "effectiveWeight": 20,
            "score": 90,
            "points": 18,
            "reason": "Scored as local software. Official packages on PyPI, npm, Maven, NuGet and RubyGems at 4.51.0, with Python 3.10 and Node.js 22 stated (20). Public CI per binding plus Grid and Selenium Manager jobs, and the 15 most recent runs on trunk on 13 October 2026 succeeded except one cancelled cache job (25). 189 open issues and pull requests across five bindings, labelled by component, with a Grid regression in round-robin slot selection (open since 2 October) and an idle-session issue with 27 comments (21 of 25). The project says it does not follow semver, but deprecates before removal and lists removals in each binding's changelog (9 of 15). 4.x, marked Production/Stable on PyPI (15)."
          },
          {
            "key": "performance",
            "name": "Performance",
            "weight": 10,
            "effectiveWeight": 0,
            "pending": true,
            "points": 0,
            "reason": "Pending. Latency is measured per call by our probes, which haven't run yet, so this run doesn't score it. Its weight is shared across the assessed categories until the first probe window closes."
          },
          {
            "key": "schema",
            "name": "Schema \u0026 documentation",
            "weight": 13,
            "effectiveWeight": 16.25,
            "score": 89,
            "points": 14.46,
            "reason": "Graded as a library and a WebDriver server. Typed bindings, a `py.typed` marker and the W3C WebDriver specification as the wire contract. An open issue asks for a machine-readable API reference across bindings (22 of 25). llms.txt with notes for code generators (10). The docs explain each feature in every binding, and the agent page says what not to use, such as sleeps and legacy CDP pages (15 of 20). Typed options classes and enumerated locator strategies, with capabilities still accepting free-form maps (12 of 15). Docs code samples run in CI, and an errors page gives causes and fixes (15 of 15). Versioned releases and a changelog per binding (15)."
          },
          {
            "key": "ergonomics",
            "name": "Agent ergonomics",
            "weight": 13,
            "effectiveWeight": 16.25,
            "score": 70,
            "points": 11.38,
            "reason": "A library adds no tool definitions to context. There is no accessibility snapshot, so an agent reads page source or queries elements (14 of 25). `find_elements`, relative locators, element screenshots and BiDi network and log filters (14 of 20). Typed exceptions with a documented page per common one, such as `ElementClickInterceptedException` (17 of 20). Explicit waits with expected conditions and Grid's session queue retry. No idempotency concept applies (10 of 20). Selenium Manager fetches drivers so a first script needs no setup, and five official languages (15)."
          },
          {
            "key": "security",
            "name": "Security \u0026 auth",
            "weight": 14,
            "effectiveWeight": 17.5,
            "score": 43,
            "points": 7.53,
            "reason": "No credential for the bindings. Grid supports basic authentication and a Node registration secret, both off by default (18 of 30). No read-only mode or confirmation step, and Grid sessions run whatever the client sends (5 of 20). Page content reaches the script unfiltered and the docs give no prompt-injection guidance (0). Driver logging and Grid's OpenTelemetry tracing give the operator a record of commands (10 of 15). The organisation's SECURITY.md names security@seleniumhq.org. No bug bounty, no security.txt and no advisories in OSV for the PyPI, npm or Grid packages (10 of 20)."
          },
          {
            "key": "payments",
            "name": "Payments \u0026 pricing",
            "weight": 10,
            "effectiveWeight": 12.5,
            "score": 60,
            "points": 7.5,
            "reason": "Free, self-hosted, nothing to buy, so 20 + 20 + 20 under the self-hosted rule. No payment protocol (0)."
          },
          {
            "key": "tasks",
            "name": "Task success",
            "weight": 10,
            "effectiveWeight": 0,
            "pending": true,
            "points": 0,
            "reason": "Pending. Task success needs the category task suites run through each tool, which haven't run yet, so this run doesn't score it. Its weight is shared across the assessed categories until then. A data provider's data-quality score is published on its listing now and becomes half of this category when it's scored."
          },
          {
            "key": "maintenance",
            "name": "Maintenance \u0026 community",
            "weight": 7,
            "effectiveWeight": 8.75,
            "score": 94,
            "points": 8.23,
            "reason": "4.51.0 on 9 October 2026 (30). Five releases since 10 August 2026 (20). Most of the newest 30 open issues and pull requests have comments and component labels, and pull requests from 13 October already had replies (20 of 25). Current official bindings in five languages, no MCP server to register (15). CI green, Renovate updates dependencies and browser pins (9 of 10)."
          },
          {
            "key": "transparency",
            "name": "Transparency \u0026 trust",
            "weight": 7,
            "effectiveWeight": 8.75,
            "score": 74,
            "points": 6.48,
            "note": "editorial 80, provenance 68",
            "reason": "Apache-2.0, held by Software Freedom Conservancy (30). No privacy page on selenium.dev. The Selenium Manager page lists each field it sends, how often and the purpose (20 of 30). A written rule to deprecate with a pointer to the alternative before removal, and changelogs record removals, without a stated notice period (14 of 20). Telemetry is disclosed with three opt-outs, but on by default (16 of 20)."
          }
        ],
        "assessment": {
          "date": "2026-10-14",
          "basis": "public evidence",
          "confidence": "medium",
          "notes": {
            "ergonomics": "A library adds no tool definitions to context. There is no accessibility snapshot, so an agent reads page source or queries elements (14 of 25). `find_elements`, relative locators, element screenshots and BiDi network and log filters (14 of 20). Typed exceptions with a documented page per common one, such as `ElementClickInterceptedException` (17 of 20). Explicit waits with expected conditions and Grid's session queue retry. No idempotency concept applies (10 of 20). Selenium Manager fetches drivers so a first script needs no setup, and five official languages (15).",
            "maintenance": "4.51.0 on 9 October 2026 (30). Five releases since 10 August 2026 (20). Most of the newest 30 open issues and pull requests have comments and component labels, and pull requests from 13 October already had replies (20 of 25). Current official bindings in five languages, no MCP server to register (15). CI green, Renovate updates dependencies and browser pins (9 of 10).",
            "payments": "Free, self-hosted, nothing to buy, so 20 + 20 + 20 under the self-hosted rule. No payment protocol (0).",
            "reliability": "Scored as local software. Official packages on PyPI, npm, Maven, NuGet and RubyGems at 4.51.0, with Python 3.10 and Node.js 22 stated (20). Public CI per binding plus Grid and Selenium Manager jobs, and the 15 most recent runs on trunk on 13 October 2026 succeeded except one cancelled cache job (25). 189 open issues and pull requests across five bindings, labelled by component, with a Grid regression in round-robin slot selection (open since 2 October) and an idle-session issue with 27 comments (21 of 25). The project says it does not follow semver, but deprecates before removal and lists removals in each binding's changelog (9 of 15). 4.x, marked Production/Stable on PyPI (15).",
            "schema": "Graded as a library and a WebDriver server. Typed bindings, a `py.typed` marker and the W3C WebDriver specification as the wire contract. An open issue asks for a machine-readable API reference across bindings (22 of 25). llms.txt with notes for code generators (10). The docs explain each feature in every binding, and the agent page says what not to use, such as sleeps and legacy CDP pages (15 of 20). Typed options classes and enumerated locator strategies, with capabilities still accepting free-form maps (12 of 15). Docs code samples run in CI, and an errors page gives causes and fixes (15 of 15). Versioned releases and a changelog per binding (15).",
            "security": "No credential for the bindings. Grid supports basic authentication and a Node registration secret, both off by default (18 of 30). No read-only mode or confirmation step, and Grid sessions run whatever the client sends (5 of 20). Page content reaches the script unfiltered and the docs give no prompt-injection guidance (0). Driver logging and Grid's OpenTelemetry tracing give the operator a record of commands (10 of 15). The organisation's SECURITY.md names security@seleniumhq.org. No bug bounty, no security.txt and no advisories in OSV for the PyPI, npm or Grid packages (10 of 20).",
            "transparency": "Apache-2.0, held by Software Freedom Conservancy (30). No privacy page on selenium.dev. The Selenium Manager page lists each field it sends, how often and the purpose (20 of 30). A written rule to deprecate with a pointer to the alternative before removal, and changelogs record removals, without a stated notice period (14 of 20). Telemetry is disclosed with three opt-outs, but on by default (16 of 20)."
          },
          "sources": [
            {
              "what": "repository, AGENTS.md, NOTICE and Python changelog at commit d7dea85 (13 October 2026)",
              "url": "https://github.com/SeleniumHQ/selenium",
              "seen": "2026-10-14"
            },
            {
              "what": "releases",
              "url": "https://api.github.com/repos/SeleniumHQ/selenium/releases?per_page=30",
              "seen": "2026-10-14"
            },
            {
              "what": "CI runs on trunk",
              "url": "https://api.github.com/repos/SeleniumHQ/selenium/actions/runs?branch=trunk\u0026event=push\u0026per_page=15",
              "seen": "2026-10-14"
            },
            {
              "what": "newest 30 open issues and pull requests",
              "url": "https://api.github.com/repos/SeleniumHQ/selenium/issues?state=open\u0026per_page=30\u0026sort=created\u0026direction=desc",
              "seen": "2026-10-14"
            },
            {
              "what": "organisation security policy",
              "url": "https://github.com/SeleniumHQ/.github/blob/trunk/SECURITY.md",
              "seen": "2026-10-14"
            },
            {
              "what": "llms.txt",
              "url": "https://www.selenium.dev/llms.txt",
              "seen": "2026-10-14"
            },
            {
              "what": "Using AI coding agents with Selenium",
              "url": "https://www.selenium.dev/documentation/ai_agents/",
              "seen": "2026-10-14"
            },
            {
              "what": "Selenium Manager, including usage statistics",
              "url": "https://www.selenium.dev/documentation/selenium_manager/",
              "seen": "2026-10-14"
            },
            {
              "what": "Grid CLI options",
              "url": "https://www.selenium.dev/documentation/grid/configuration/cli_options/",
              "seen": "2026-10-14"
            },
            {
              "what": "Grid endpoints",
              "url": "https://www.selenium.dev/documentation/grid/advanced_features/endpoints/",
              "seen": "2026-10-14"
            },
            {
              "what": "common errors",
              "url": "https://www.selenium.dev/documentation/webdriver/troubleshooting/errors/",
              "seen": "2026-10-14"
            },
            {
              "what": "downloads and versions",
              "url": "https://www.selenium.dev/downloads/",
              "seen": "2026-10-14"
            },
            {
              "what": "PyPI package and weekly downloads",
              "url": "https://pypistats.org/api/packages/selenium/recent",
              "seen": "2026-10-14"
            },
            {
              "what": "OSV advisories for selenium, selenium-webdriver and selenium-grid (none)",
              "url": "https://api.osv.dev/v1/query",
              "seen": "2026-10-14"
            }
          ],
          "openQuestions": [
            "Maven, NuGet and RubyGems download counts were not read.",
            "Whether Grid's GraphQL endpoint is covered by its basic authentication was not established from the docs read."
          ]
        },
        "negative": 0,
        "verdict": "Selenium is stable, Apache-2.0 software on 4.51.0 with bindings in five languages, CI passing on trunk, an llms.txt and an agent guide added in September 2026. It has no MCP server of its own, Selenium Manager sends usage statistics by default, and Grid accepts unauthenticated sessions unless a username and password are set.",
        "bestFor": "Agents that write test or automation scripts in any of five languages, and teams with a Grid.",
        "strengths": [
          "Official bindings for Java, Python, C#, Ruby and JavaScript, released together, 4.51.0 on 9 October 2026",
          "llms.txt and a page on using AI coding agents with Selenium, last changed 28 September 2026",
          "Code samples in the docs are run in CI against current releases",
          "An error page per common exception, such as `StaleElementReferenceException`, gives causes and fixes",
          "The 15 most recent CI runs on trunk, 13 October 2026, all succeeded or were cancelled"
        ],
        "weaknesses": [
          "No MCP server from the project. The docs point to community servers and say they are third-party",
          "Selenium Manager sends anonymised usage statistics to Plausible once a day by default, until `SE_AVOID_STATS=true` is set",
          "Grid has no authentication unless `--username` and `--password` are both set",
          "The project says it does not follow semantic versioning, and removes deprecated APIs in minor releases",
          "No accessibility snapshot call, so agents read page source or query elements one by one"
        ],
        "agentNotes": [
          "Install with `pip install selenium` (Python 3.10 or later) and let Selenium Manager fetch drivers. Do not set driver paths",
          "Use `WebDriverWait` with expected conditions, never fixed sleeps, and do not mix implicit and explicit waits",
          "Set `SE_AVOID_STATS=true` to stop Selenium Manager sending usage statistics",
          "Point coding agents at https://www.selenium.dev/llms.txt. Most Selenium 2 and 3 era examples use removed APIs",
          "Set `--username` and `--password` before exposing a Grid beyond localhost. Check `http://localhost:4444/status` before creating sessions"
        ],
        "metrics": {
          "kind": "local",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "BB",
            "methodology": "0.4",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 73.6
          }
        ],
        "editorialScores": {
          "ergonomics": 70,
          "maintenance": 94,
          "payments": 60,
          "reliability": 90,
          "schema": 89,
          "security": 43,
          "transparency": 80
        },
        "provenanceScore": 68
      },
      "connect": {
        "install": "pip install selenium",
        "http": "curl http://localhost:4444/status"
      },
      "letme": {
        "capability": "https://letme.dev/browser.control",
        "tool": "https://letme.dev/selenium"
      },
      "notable": [
        "Selenium 4.51.0 for all five bindings on 9 October 2026, after 4.50.0 on 30 September (https://www.selenium.dev/downloads/)",
        "The page Using AI coding agents with Selenium, added on 28 September 2026, lists llms.txt and the tested examples, and calls MCP servers for Selenium third-party projects (https://www.selenium.dev/documentation/ai_agents/)",
        "Selenium Manager reports Selenium version, binding, OS, browser and rough location to Plausible once a day by default. `SE_AVOID_STATS=true` or `avoid-stats = true` turns it off (https://www.selenium.dev/documentation/selenium_manager/)",
        "Grid takes `--username` and `--password` for client access and `--registration-secret` for Nodes, none set by default (https://www.selenium.dev/documentation/grid/configuration/cli_options/)",
        "The repository's AGENTS.md says the project does not follow semantic versioning and that public functionality is deprecated with a pointer to the alternative before removal (https://github.com/SeleniumHQ/selenium/blob/trunk/AGENTS.md)",
        "Security reports go to security@seleniumhq.org per the organisation's SECURITY.md (https://github.com/SeleniumHQ/.github/blob/trunk/SECURITY.md)",
        "Earliest upload of the Python package on PyPI is 25 April 2008. NOTICE credits Selenium committers from 2004 (https://pypi.org/project/selenium/)"
      ],
      "area": "developer",
      "details": [
        {
          "label": "Interfaces",
          "value": "Language bindings for Java, Python, C#, Ruby and JavaScript. Selenium Grid, a self-hosted server speaking W3C WebDriver over HTTP on port 4444, with status, drain and session queue endpoints and a GraphQL query endpoint. Selenium IDE, a record and playback app for people"
        },
        {
          "label": "Protocols",
          "value": "W3C WebDriver and WebDriver BiDi, implemented by the browser vendors' drivers. Chrome DevTools Protocol support is described as legacy"
        },
        {
          "label": "Runtimes",
          "value": "Python 3.10 or later, Node.js 22 or later for selenium-webdriver. Selenium Manager, a Rust binary shipped in every binding, downloads matching drivers and browsers"
        },
        {
          "label": "Grid security",
          "value": "Basic authentication with `--username` and `--password`, off by default. `--registration-secret` for Node registration. `--allow-cors` off by default"
        },
        {
          "label": "Telemetry",
          "value": "Selenium Manager sends anonymised usage statistics to Plausible once a day, on by default. Opt out with `SE_AVOID_STATS=true`, `--avoid-stats` or `avoid-stats = true`"
        },
        {
          "label": "Errors",
          "value": "Typed exceptions in each binding (34 exception classes in Python), with a docs page of causes and fixes for common ones (https://www.selenium.dev/documentation/webdriver/troubleshooting/errors/)"
        }
      ],
      "provenance": {
        "legalEntity": "Software Freedom Conservancy",
        "domain": "selenium.dev",
        "domainRegistered": "2019-02-22",
        "domainNote": "NOTICE reads Copyright 2011-2026 Software Freedom Conservancy, which holds the project. RDAP gives selenium.dev a registration date of 22 February 2019. selenium.dev answers 404 for /.well-known/security.txt. Security reports go to security@seleniumhq.org.",
        "endpointOnVendorDomain": null,
        "terms": "",
        "privacy": "",
        "statusPage": "",
        "changelog": "https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES",
        "securityTxt": "none",
        "checked": "2026-10-14",
        "notes": [
          "No terms or privacy document governs this software beyond the Apache-2.0 licence, so `terms` and `privacy` are left out. selenium.dev has no privacy page (/privacy/ answers 404). Selenium Manager's data collection is described in its documentation page.",
          "Each binding keeps its own changelog. The Python one is linked, and the downloads page links the others.",
          "selenium.dev's robots.txt names all user agents with no Disallow lines, so every page was read."
        ],
        "score": 68,
        "checks": [
          {
            "check": "Legal entity named",
            "value": "Software Freedom Conservancy",
            "points": 20,
            "max": 20,
            "state": "ok"
          },
          {
            "check": "Domain age",
            "value": "selenium.dev, registered 2019-02-22 (7 years)",
            "points": 11,
            "max": 15,
            "state": "part"
          },
          {
            "check": "Endpoint on the vendor's domain",
            "value": "no hosted endpoint",
            "points": 0,
            "max": 0,
            "state": "na"
          },
          {
            "check": "Terms of service",
            "value": "nothing hosted, so the Apache-2.0 licence stands in",
            "points": 10,
            "max": 10,
            "state": "ok"
          },
          {
            "check": "Privacy policy",
            "value": "nothing hosted, not scored",
            "points": 0,
            "max": 0,
            "state": "na"
          },
          {
            "check": "Status page",
            "value": "not found",
            "points": 0,
            "max": 10,
            "state": "no"
          },
          {
            "check": "Changelog",
            "value": "published",
            "points": 10,
            "max": 10,
            "state": "ok"
          },
          {
            "check": "security.txt",
            "value": "not found",
            "points": 0,
            "max": 10,
            "state": "no"
          }
        ]
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/selenium.json"
    },
    "verify": {
      "accepts": "a page on selenium.dev or one of its subdomains, or the README of github.com/SeleniumHQ/selenium",
      "badgeUrl": "https://www.anchorterminal.com/badges/selenium.svg",
      "body": {
        "slug": "selenium",
        "url": "the page with the badge or the link"
      },
      "docs": "https://www.anchorterminal.com/builders/#verify",
      "effect": "none, it never changes a grade, rank or review",
      "endpoint": "https://www.anchorterminal.com/api/v1/verify",
      "listingUrl": "https://www.anchorterminal.com/tools/selenium",
      "mcpTool": "verify_listing",
      "recheck": "weekly; two failed checks in a row and it lapses, a later pass restores it",
      "snippets": {
        "html": "\u003ca href=\"https://www.anchorterminal.com/tools/selenium\"\u003e\u003cimg src=\"https://www.anchorterminal.com/badges/selenium.svg\" alt=\"Selenium on Anchor Terminal\" height=\"20\"\u003e\u003c/a\u003e",
        "markdown": "[![Selenium on Anchor Terminal](https://www.anchorterminal.com/badges/selenium.svg)](https://www.anchorterminal.com/tools/selenium)",
        "link": "\u003ca href=\"https://www.anchorterminal.com/tools/selenium\"\u003eSelenium on Anchor Terminal\u003c/a\u003e"
      }
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/tools/selenium",
    "json": "https://www.anchorterminal.com/tools/selenium.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/tools/selenium.md",
    "slim": "https://www.anchorterminal.com/tools/selenium.min.md"
  },
  "markdown": "## Overview\n\n**Grade BB · 73.6/100 · rank #90 of 1076 · #4 in Browser automation · agent-ready · confidence medium**\n\n\n## Assessment\n\nSelenium is stable, Apache-2.0 software on 4.51.0 with bindings in five languages, CI passing on trunk, an llms.txt and an agent guide added in September 2026. It has no MCP server of its own, Selenium Manager sends usage statistics by default, and Grid accepts unauthenticated sessions unless a username and password are set.\n\n## Facts\n\n| Field | Value |\n| --- | --- |\n| Vendor | Selenium project (Software Freedom Conservancy) (https://www.selenium.dev) |\n| Kind | SDK + MCP |\n| Category | Browser automation (https://www.anchorterminal.com/categories/browser) |\n| Transport | HTTP |\n| Auth | None · No account or key for the bindings, which run on the owner's machine. Grid accepts sessions without authentication unless both `--username` and `--password` are set, and Nodes register with a shared `--registration-secret` when one is configured. Site logins live in the browser profile or cookies the script sets. |\n| Pricing | Free (Free · OSS) · Free and open source under Apache-2.0, with nothing to buy and no hosted service from the project. Grid is self-hosted. Commercial clouds that run Selenium sessions are separate companies (checked 2026-10-14). |\n| x402 | No · No x402, MPP or L402 in the docs, llms.txt or the source (checked 2026-10-14). |\n| Licence | Apache-2.0 |\n| Packages | pypi: `selenium`; npm: `selenium-webdriver`; maven: `org.seleniumhq.selenium:selenium-java`; nuget: `Selenium.WebDriver`; rubygems: `selenium-webdriver` |\n| Source | https://github.com/SeleniumHQ/selenium |\n| Docs | https://www.selenium.dev/documentation/ |\n| llms.txt | https://www.selenium.dev/llms.txt |\n| Last release | 2026-10-09 |\n| GitHub stars | 34,542 (as of 2026-10-14) |\n| npm downloads / week | 1,807,038 |\n| PyPI downloads / week | 6,884,385 |\n| Interfaces | Language bindings for Java, Python, C#, Ruby and JavaScript. Selenium Grid, a self-hosted server speaking W3C WebDriver over HTTP on port 4444, with status, drain and session queue endpoints and a GraphQL query endpoint. Selenium IDE, a record and playback app for people |\n| Protocols | W3C WebDriver and WebDriver BiDi, implemented by the browser vendors' drivers. Chrome DevTools Protocol support is described as legacy |\n| Runtimes | Python 3.10 or later, Node.js 22 or later for selenium-webdriver. Selenium Manager, a Rust binary shipped in every binding, downloads matching drivers and browsers |\n| Grid security | Basic authentication with `--username` and `--password`, off by default. `--registration-secret` for Node registration. `--allow-cors` off by default |\n| Telemetry | Selenium Manager sends anonymised usage statistics to Plausible once a day, on by default. Opt out with `SE_AVOID_STATS=true`, `--avoid-stats` or `avoid-stats = true` |\n| Errors | Typed exceptions in each binding (34 exception classes in Python), with a docs page of causes and fixes for common ones (https://www.selenium.dev/documentation/webdriver/troubleshooting/errors/) |\n| Capabilities | browser.control, browser.debug |\n| Tags | official, local, open-source, browser, sdk, python, java, javascript, dotnet, ruby, llms-txt, no-auth, webdriver |\n| JSON | https://www.anchorterminal.com/api/v1/tools/selenium.json |\n\n## Score breakdown (methodology v0.4, October 2026 research run)\n\nAssessed 2026-10-14 from public evidence against the published checklist (https://www.anchorterminal.com/benchmark/#checklist). Confidence: medium. Performance and Task success pending (no score, not in the total); the total is Σ(score × weight) ÷ 80 over the 7 assessed categories. \"This run\" is each category's share of the 100 points.\n\n| Category | Weight | This run | Score (0–100) | Points |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% | 20 | 90 | 18.0 |\n| Performance | 10% | pending | pending | n/a |\n| Schema \u0026 documentation | 13% | 16.2 | 89 | 14.5 |\n| Agent ergonomics | 13% | 16.2 | 70 | 11.4 |\n| Security \u0026 auth | 14% | 17.5 | 43 | 7.5 |\n| Payments \u0026 pricing | 10% | 12.5 | 60 | 7.5 |\n| Task success | 10% | pending | pending | n/a |\n| Maintenance \u0026 community | 7% | 8.8 | 94 | 8.2 |\n| Transparency \u0026 trust (editorial 80, provenance 68) | 7% | 8.8 | 74 | 6.5 |\n| Negative events | up to −15 | up to −15 | none recorded | 0 |\n| **Total** | | | | **73.6 → BB** |\n\n### Why each score\n\n- Reliability 90: Scored as local software. Official packages on PyPI, npm, Maven, NuGet and RubyGems at 4.51.0, with Python 3.10 and Node.js 22 stated (20). Public CI per binding plus Grid and Selenium Manager jobs, and the 15 most recent runs on trunk on 13 October 2026 succeeded except one cancelled cache job (25). 189 open issues and pull requests across five bindings, labelled by component, with a Grid regression in round-robin slot selection (open since 2 October) and an idle-session issue with 27 comments (21 of 25). The project says it does not follow semver, but deprecates before removal and lists removals in each binding's changelog (9 of 15). 4.x, marked Production/Stable on PyPI (15).\n- Performance: Pending. Latency is measured per call by our probes, which haven't run yet, so this run doesn't score it. Its weight is shared across the assessed categories until the first probe window closes.\n- Schema \u0026 documentation 89: Graded as a library and a WebDriver server. Typed bindings, a `py.typed` marker and the W3C WebDriver specification as the wire contract. An open issue asks for a machine-readable API reference across bindings (22 of 25). llms.txt with notes for code generators (10). The docs explain each feature in every binding, and the agent page says what not to use, such as sleeps and legacy CDP pages (15 of 20). Typed options classes and enumerated locator strategies, with capabilities still accepting free-form maps (12 of 15). Docs code samples run in CI, and an errors page gives causes and fixes (15 of 15). Versioned releases and a changelog per binding (15).\n- Agent ergonomics 70: A library adds no tool definitions to context. There is no accessibility snapshot, so an agent reads page source or queries elements (14 of 25). `find_elements`, relative locators, element screenshots and BiDi network and log filters (14 of 20). Typed exceptions with a documented page per common one, such as `ElementClickInterceptedException` (17 of 20). Explicit waits with expected conditions and Grid's session queue retry. No idempotency concept applies (10 of 20). Selenium Manager fetches drivers so a first script needs no setup, and five official languages (15).\n- Security \u0026 auth 43: No credential for the bindings. Grid supports basic authentication and a Node registration secret, both off by default (18 of 30). No read-only mode or confirmation step, and Grid sessions run whatever the client sends (5 of 20). Page content reaches the script unfiltered and the docs give no prompt-injection guidance (0). Driver logging and Grid's OpenTelemetry tracing give the operator a record of commands (10 of 15). The organisation's SECURITY.md names security@seleniumhq.org. No bug bounty, no security.txt and no advisories in OSV for the PyPI, npm or Grid packages (10 of 20).\n- Payments \u0026 pricing 60: Free, self-hosted, nothing to buy, so 20 + 20 + 20 under the self-hosted rule. No payment protocol (0).\n- Task success: Pending. Task success needs the category task suites run through each tool, which haven't run yet, so this run doesn't score it. Its weight is shared across the assessed categories until then. A data provider's data-quality score is published on its listing now and becomes half of this category when it's scored.\n- Maintenance \u0026 community 94: 4.51.0 on 9 October 2026 (30). Five releases since 10 August 2026 (20). Most of the newest 30 open issues and pull requests have comments and component labels, and pull requests from 13 October already had replies (20 of 25). Current official bindings in five languages, no MCP server to register (15). CI green, Renovate updates dependencies and browser pins (9 of 10).\n- Transparency \u0026 trust 74: Apache-2.0, held by Software Freedom Conservancy (30). No privacy page on selenium.dev. The Selenium Manager page lists each field it sends, how often and the purpose (20 of 30). A written rule to deprecate with a pointer to the alternative before removal, and changelogs record removals, without a stated notice period (14 of 20). Telemetry is disclosed with three opt-outs, but on by default (16 of 20).\n\nFix list for a coding agent, everything this grade says the listing lacks, the biggest gain first (12 items): https://www.anchorterminal.com/fixes/selenium.md (JSON https://www.anchorterminal.com/fixes/selenium.json)\n\n### What we couldn't check\n\n- Maven, NuGet and RubyGems download counts were not read.\n- Whether Grid's GraphQL endpoint is covered by its basic authentication was not established from the docs read.\n\n### Sources\n\n- repository, AGENTS.md, NOTICE and Python changelog at commit d7dea85 (13 October 2026): \u003chttps://github.com/SeleniumHQ/selenium\u003e (seen 2026-10-14)\n- releases: \u003chttps://api.github.com/repos/SeleniumHQ/selenium/releases?per_page=30\u003e (seen 2026-10-14)\n- CI runs on trunk: \u003chttps://api.github.com/repos/SeleniumHQ/selenium/actions/runs?branch=trunk\u0026event=push\u0026per_page=15\u003e (seen 2026-10-14)\n- newest 30 open issues and pull requests: \u003chttps://api.github.com/repos/SeleniumHQ/selenium/issues?state=open\u0026per_page=30\u0026sort=created\u0026direction=desc\u003e (seen 2026-10-14)\n- organisation security policy: \u003chttps://github.com/SeleniumHQ/.github/blob/trunk/SECURITY.md\u003e (seen 2026-10-14)\n- llms.txt: \u003chttps://www.selenium.dev/llms.txt\u003e (seen 2026-10-14)\n- Using AI coding agents with Selenium: \u003chttps://www.selenium.dev/documentation/ai_agents/\u003e (seen 2026-10-14)\n- Selenium Manager, including usage statistics: \u003chttps://www.selenium.dev/documentation/selenium_manager/\u003e (seen 2026-10-14)\n- Grid CLI options: \u003chttps://www.selenium.dev/documentation/grid/configuration/cli_options/\u003e (seen 2026-10-14)\n- Grid endpoints: \u003chttps://www.selenium.dev/documentation/grid/advanced_features/endpoints/\u003e (seen 2026-10-14)\n- common errors: \u003chttps://www.selenium.dev/documentation/webdriver/troubleshooting/errors/\u003e (seen 2026-10-14)\n- downloads and versions: \u003chttps://www.selenium.dev/downloads/\u003e (seen 2026-10-14)\n- PyPI package and weekly downloads: \u003chttps://pypistats.org/api/packages/selenium/recent\u003e (seen 2026-10-14)\n- OSV advisories for selenium, selenium-webdriver and selenium-grid (none): \u003chttps://api.osv.dev/v1/query\u003e (seen 2026-10-14)\n\n## Who's behind it (provenance 68/100, checked 2026-10-14)\n\n| Check | Finding | Points |\n| --- | --- | --- |\n| Legal entity named | Software Freedom Conservancy | 20/20 |\n| Domain age | selenium.dev, registered 2019-02-22 (7 years) | 11/15 |\n| Endpoint on the vendor's domain | no hosted endpoint | n/a |\n| Terms of service | nothing hosted, so the Apache-2.0 licence stands in | 10/10 |\n| Privacy policy | nothing hosted, not scored | n/a |\n| Status page | not found | 0/10 |\n| Changelog | published | 10/10 |\n| security.txt | not found | 0/10 |\n\nNOTICE reads Copyright 2011-2026 Software Freedom Conservancy, which holds the project. RDAP gives selenium.dev a registration date of 22 February 2019. selenium.dev answers 404 for /.well-known/security.txt. Security reports go to security@seleniumhq.org.\n\nNo terms or privacy document governs this software beyond the Apache-2.0 licence, so `terms` and `privacy` are left out. selenium.dev has no privacy page (/privacy/ answers 404). Selenium Manager's data collection is described in its documentation page.\n\nEach binding keeps its own changelog. The Python one is linked, and the downloads page links the others.\n\nselenium.dev's robots.txt names all user agents with no Disallow lines, so every page was read.\n\n### Terms and privacy, as read\n\nA reading by a fixed set of rules, each answered with the vendor's own sentence. Not legal advice.\n\n**Terms of service**. Nothing is hosted by the vendor, so there are no terms of service to read. The Apache-2.0 licence stands in and the check scores in full.\n\n\n**Privacy policy**. Nothing is hosted by the vendor, so there is no privacy policy to read and the check isn't scored.\n\n\n## Probe metrics\n\nNot measured yet. Our benchmark probes haven't run, so there's no availability, latency or error rate from a run and Performance is pending. Live uptime, where we poll the endpoint, is under Live and doesn't change the score.\n\n## Strengths\n\n- Official bindings for Java, Python, C#, Ruby and JavaScript, released together, 4.51.0 on 9 October 2026\n- llms.txt and a page on using AI coding agents with Selenium, last changed 28 September 2026\n- Code samples in the docs are run in CI against current releases\n- An error page per common exception, such as `StaleElementReferenceException`, gives causes and fixes\n- The 15 most recent CI runs on trunk, 13 October 2026, all succeeded or were cancelled\n\n## Weaknesses\n\n- No MCP server from the project. The docs point to community servers and say they are third-party\n- Selenium Manager sends anonymised usage statistics to Plausible once a day by default, until `SE_AVOID_STATS=true` is set\n- Grid has no authentication unless `--username` and `--password` are both set\n- The project says it does not follow semantic versioning, and removes deprecated APIs in minor releases\n- No accessibility snapshot call, so agents read page source or query elements one by one\n\n## Before you call it (notes for agents)\n\n1. Install with `pip install selenium` (Python 3.10 or later) and let Selenium Manager fetch drivers. Do not set driver paths\n2. Use `WebDriverWait` with expected conditions, never fixed sleeps, and do not mix implicit and explicit waits\n3. Set `SE_AVOID_STATS=true` to stop Selenium Manager sending usage statistics\n4. Point coding agents at https://www.selenium.dev/llms.txt. Most Selenium 2 and 3 era examples use removed APIs\n5. Set `--username` and `--password` before exposing a Grid beyond localhost. Check `http://localhost:4444/status` before creating sessions\n\n## Connect\n\nInstall:\n\n```bash\npip install selenium\n```\n\nFirst request:\n\n```bash\ncurl http://localhost:4444/status\n```\n\nThrough letme (picks today, calling later): https://letme.dev/selenium. letme answers with the pick and how to call it direct; calling through letme (one key, the vendor's own price) comes later. How it works: https://www.anchorterminal.com/letme/index.md\n\n## Similar tools\n\nRanked by shared capabilities, then score. Same-category tools with no shared capability key are listed last.\n\n| Tool | Grade | Score | Rank | Shared capabilities | x402 | Markdown |\n| --- | --- | --- | --- | --- | --- | --- |\n| Chrome DevTools MCP | BB | 77 | 25 | browser.control, browser.debug | no | https://www.anchorterminal.com/tools/chrome-devtools-mcp.md |\n| Puppeteer | BB | 70.6 | 154 | browser.control, browser.debug | no | https://www.anchorterminal.com/tools/puppeteer.md |\n| Browserless | BB | 70.4 | 158 | browser.control, browser.debug | no | https://www.anchorterminal.com/tools/browserless.md |\n| Steel | BB | 70.4 | 160 | browser.control, browser.debug | yes | https://www.anchorterminal.com/tools/steel.md |\n| REA | B | 69.7 | 180 | browser.debug, browser.control | no | https://www.anchorterminal.com/tools/rea.md |\n| Anchor Browser | B | 67.3 | 269 | browser.control, browser.debug | no | https://www.anchorterminal.com/tools/anchor-browser.md |\n\n## Panel reviews (0)\n\nReviewed by the Anchor panel (https://www.anchorterminal.com/reviewers/index.md): .\n\nDesk reviews, written from public documentation, pricing, terms, source and status history on 1 October 2026. No calls made. For a desk review, the outcome says whether the reviewer's questions could be answered from public material: success, partial or failure. How reviews work: https://www.anchorterminal.com/reviews/how-it-works.md\n\n## Notable\n\n- Selenium 4.51.0 for all five bindings on 9 October 2026, after 4.50.0 on 30 September (source: \u003chttps://www.selenium.dev/downloads/\u003e)\n- The page Using AI coding agents with Selenium, added on 28 September 2026, lists llms.txt and the tested examples, and calls MCP servers for Selenium third-party projects (source: \u003chttps://www.selenium.dev/documentation/ai_agents/\u003e)\n- Selenium Manager reports Selenium version, binding, OS, browser and rough location to Plausible once a day by default. `SE_AVOID_STATS=true` or `avoid-stats = true` turns it off (source: \u003chttps://www.selenium.dev/documentation/selenium_manager/\u003e)\n- Grid takes `--username` and `--password` for client access and `--registration-secret` for Nodes, none set by default (source: \u003chttps://www.selenium.dev/documentation/grid/configuration/cli_options/\u003e)\n- The repository's AGENTS.md says the project does not follow semantic versioning and that public functionality is deprecated with a pointer to the alternative before removal (source: \u003chttps://github.com/SeleniumHQ/selenium/blob/trunk/AGENTS.md\u003e)\n- Security reports go to security@seleniumhq.org per the organisation's SECURITY.md (source: \u003chttps://github.com/SeleniumHQ/.github/blob/trunk/SECURITY.md\u003e)\n- Earliest upload of the Python package on PyPI is 25 April 2008. NOTICE credits Selenium committers from 2004 (source: \u003chttps://pypi.org/project/selenium/\u003e)\n\n- #4 of 16 in Best browser automation tools for AI agents: https://www.anchorterminal.com/best/browser/index.md\n- All 120 browser comparisons: https://www.anchorterminal.com/compare/browser/index.md\n\n## Compare\n\n- [agent-browser vs Selenium](https://www.anchorterminal.com/compare/agent-browser-vs-selenium.md): B 66.6 vs BB 73.6\n- [Airtop vs Selenium](https://www.anchorterminal.com/compare/airtop-vs-selenium.md): C 55.3 vs BB 73.6\n- [Anchor Browser vs Selenium](https://www.anchorterminal.com/compare/anchor-browser-vs-selenium.md): B 67.3 vs BB 73.6\n- [Browser Use vs Selenium](https://www.anchorterminal.com/compare/browser-use-vs-selenium.md): BB 77.9 vs BB 73.6\n- [Browserbase vs Selenium](https://www.anchorterminal.com/compare/browserbase-vs-selenium.md): BB 76.2 vs BB 73.6\n- [Browserless vs Selenium](https://www.anchorterminal.com/compare/browserless-vs-selenium.md): BB 70.4 vs BB 73.6\n- [Chrome DevTools MCP vs Selenium](https://www.anchorterminal.com/compare/chrome-devtools-mcp-vs-selenium.md): BB 77 vs BB 73.6\n- [Hyperbrowser vs Selenium](https://www.anchorterminal.com/compare/hyperbrowser-vs-selenium.md): B 66.9 vs BB 73.6\n- [Notte vs Selenium](https://www.anchorterminal.com/compare/notte-vs-selenium.md): B 63.2 vs BB 73.6\n- [Playwright MCP vs Selenium](https://www.anchorterminal.com/compare/playwright-mcp-vs-selenium.md): B 67.6 vs BB 73.6\n- [Puppeteer (archived MCP reference server) vs Selenium](https://www.anchorterminal.com/compare/puppeteer-reference-server-archived-vs-selenium.md): F 30.6 vs BB 73.6\n- [Puppeteer vs Selenium](https://www.anchorterminal.com/compare/puppeteer-vs-selenium.md): BB 70.6 vs BB 73.6\n- [Selenium vs Skyvern](https://www.anchorterminal.com/compare/selenium-vs-skyvern.md): BB 73.6 vs B 63.1\n- [Selenium vs Steel](https://www.anchorterminal.com/compare/selenium-vs-steel.md): BB 73.6 vs BB 70.4\n- [Selenium vs TinyFish](https://www.anchorterminal.com/compare/selenium-vs-tinyfish.md): BB 73.6 vs B 67.7\n\n## Verify this listing\n\nFor the vendor. The badge or a plain link to this page verifies the listing, from a page on selenium.dev or one of its subdomains, or the README of github.com/SeleniumHQ/selenium. It shows the listing is the vendor's and that the vendor knows it's here, and it never changes a grade, rank or review. The vendor sends the page's address to `POST https://www.anchorterminal.com/api/v1/verify` as `{\"slug\": \"selenium\", \"url\": \"…\"}`, or calls the `verify_listing` tool at https://www.anchorterminal.com/mcp. We fetch the page once, then again every week; two failed checks in a row and the verification lapses, and a later pass restores it. What we check: https://www.anchorterminal.com/builders/index.md#verify\n\nHTML badge:\n\n```html\n\u003ca href=\"https://www.anchorterminal.com/tools/selenium\"\u003e\u003cimg src=\"https://www.anchorterminal.com/badges/selenium.svg\" alt=\"Selenium on Anchor Terminal\" height=\"20\"\u003e\u003c/a\u003e\n```\n\nMarkdown badge, for a README:\n\n```markdown\n[![Selenium on Anchor Terminal](https://www.anchorterminal.com/badges/selenium.svg)](https://www.anchorterminal.com/tools/selenium)\n```\n\nPlain link:\n\n```html\n\u003ca href=\"https://www.anchorterminal.com/tools/selenium\"\u003eSelenium on Anchor Terminal\u003c/a\u003e\n```\n\n## Share this listing\n\nFor the vendor. Sharing assets for social media, two PNGs of 1200 × 630 that say Selenium is listed on Anchor Terminal, with the vendor's logo and this page's address and no grade or score.\n\n- Dark: https://www.anchorterminal.com/assets/share/selenium-dark.png\n- Light: https://www.anchorterminal.com/assets/share/selenium-light.png\n- Create a video and download its frames: https://www.anchorterminal.com/assets/listing-video/index.html?listing=selenium\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-14",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.4",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run"
  },
  "page": {
    "breadcrumbs": [
      {
        "name": "Home",
        "url": "https://www.anchorterminal.com/"
      },
      {
        "name": "Terminal",
        "url": "https://www.anchorterminal.com/tools/"
      },
      {
        "name": "Browser automation",
        "url": "https://www.anchorterminal.com/categories/browser"
      },
      {
        "name": "Selenium",
        "url": ""
      }
    ],
    "description": "Selenium is the open-source browser automation project behind the W3C WebDriver standard, with official bindings for Java, Python, C#, Ruby and JavaScript and a self-hosted Grid server that runs browsers on other machines.",
    "facts": [
      "rank #90 of 1076",
      "None auth",
      "0 desk reviews"
    ],
    "h1": "Selenium",
    "image": "https://www.anchorterminal.com/assets/og/tools-selenium.png",
    "path": "/tools/selenium",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Selenium review (2026): pricing, alternatives and grade BB",
    "toc": null,
    "updated": "2026-10-14",
    "url": "https://www.anchorterminal.com/tools/selenium"
  },
  "tokens": {
    "markdown": 5400,
    "slim": 1330
  },
  "version": 1
}
