{
  "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"
  },
  "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"
  }
}
