-π SeleniumBase is a complete framework for browser automation and testing with Python and pytest. Includes stealth options and other advanced features.
-
-π Stealth modes: UC Mode and CDP Mode can bypass bot-detection, handle CAPTCHAs, and call methods from the Chrome Devtools Protocol. CDP Mode includes Stealthy Playwright Mode, which makes Playwright stealthy.
-
-π The [SeleniumBase/examples/](https://github.com/seleniumbase/SeleniumBase/tree/master/examples) folder includes over 100 ready-to-run examples. Examples that start with `test_` or end with `_test.py`/`_tests.py` are specifically designed to run with `pytest`. Other examples run directly with raw `python` (those files generally start with `raw_` to avoid confusion).
+--------
-π₯· Stealthy examples are located in [SeleniumBase/examples/cdp_mode/](https://github.com/seleniumbase/SeleniumBase/tree/master/examples/cdp_mode).
+π₯· Stealth modes: UC Mode / CDP Mode can bypass bot-detection, handle CAPTCHAs, and call methods from the Chrome Devtools Protocol. CDP Mode includes Stealthy Playwright Mode, which makes Playwright stealthy.
---------
+π§ͺ End-to-End Testing examples are located in [./examples/](https://github.com/seleniumbase/SeleniumBase/blob/master/examples).
-
βοΈ Stealthy architecture flowchart:
+π CDP Mode (stealth) examples are located in [./examples/cdp_mode/](https://github.com/seleniumbase/SeleniumBase/tree/master/examples/cdp_mode).
-
+π Stealthy Playwright examples are located in [./examples/cdp_mode/playwright/](https://github.com/seleniumbase/SeleniumBase/blob/master/examples/cdp_mode/playwright/).
-(For maximum stealth, use CDP Mode, which includes Stealthy Playwright Mode)
+π Examples that have `test_` or `_test` in the filename are specifically designed to run with `pytest` / `pynose`. Other examples run directly with raw `python` (those files generally start with `raw_` to avoid confusion).
--------
@@ -76,18 +70,22 @@
from seleniumbase import sb_cdp
sb = sb_cdp.Chrome(incognito=True)
-sb.goto("www.planetminecraft.com/account/sign_in")
-sb.solve_captcha()
-# "LOG IN" is enabled when the CAPTCHA is bypassed
-sb.wait_for_element_absent("input[disabled]")
-sb.sleep(2)
+sb.goto("https://www.planetminecraft.com/account")
+sb.assert_element('input[name="login"]')
+sb.type('input[name="email"]', "test@example.com")
+sb.type('input[name="password"]', "Fake_Password")
+sb.click("input#autologin") # The checkbox
+if sb.is_element_visible("input[disabled]"):
+ sb.solve_captcha() # Enables the input
+sb.assert_element_absent("input[disabled]")
+sb.sleep(1.5)
sb.quit()
```
> `python raw_cdp_planetmc.py`
-
+
β sb.solve_captcha() handles CAPTCHAs that aren't bypassed automatically. (If called when there's no CAPTCHA on the page, then nothing happens / no-op.)
@@ -99,51 +97,22 @@ sb.quit()
```python
from seleniumbase import sb_cdp
-sb = sb_cdp.Chrome()
+sb = sb_cdp.Chrome(fast=True)
sb.goto("https://news.ycombinator.com/submitted?id=seleniumbase")
elements = sb.find_elements("span.titleline > a")
for element in elements:
- print("* %s" % element.text)
+ print("* " + element.text)
```
> `python raw_cdp_yc_news.py`
-
-```python
-from seleniumbase import sb_cdp
-
-sb = sb_cdp.Chrome(fast=True)
-sb.goto("https://seleniumbase.io/demo_page")
-sb.type("input", "Quickly type text!")
-sb.press_keys("textarea", "Slowly type text!")
-sb.click("#myButton")
-sb.set_value("input#mySlider", "100")
-sb.click_visible_elements("input.checkBoxClassB")
-sb.select_option_by_text("#mySelect", "Set to 75%")
-sb.hover_and_click("#myDropdown", "#dropOption2")
-sb.click("#checkBox1")
-sb.drag_and_drop("img#logo", "div#drop2")
-sb.nested_click("iframe#myFrame3", ".fBox")
-sb.highlight("#myButton")
-sb.quit()
-```
-
-> `python raw_cdp_methods.py`
-
-
-
-βΉοΈ Setting `fast=True` lets your automation go at full speed, which may be useful if maximum stealth isn't your goal.
-
-----
+--------
-
π This example bypasses Cloudflare's challenge page with UC + CDP Mode: (If the Turnstile isn't bypassed automatically, sb.solve_captcha() handles it.)
+
π This example bypasses Cloudflare's challenge page with UC + CDP Mode:
```python
from seleniumbase import SB
@@ -160,22 +129,14 @@ with SB(uc=True, test=True, locale="en") as sb:
> `python raw_gitlab.py`
-
+
--------
-π§ͺ End-to-End Testing examples are located in [./examples/](https://github.com/seleniumbase/SeleniumBase/blob/master/examples).
-
-π Stealthy CDP Mode examples are located in [./examples/cdp_mode/](https://github.com/seleniumbase/SeleniumBase/tree/master/examples/cdp_mode).
-
-π Stealthy Playwright examples are located in [./examples/cdp_mode/playwright/](https://github.com/seleniumbase/SeleniumBase/blob/master/examples/cdp_mode/playwright/).
-
---------
-
π CLI Options for Supported Chromium Browsers
-
π‘ You can set the Chromium browser to use via command line parameters:
+
π‘ You can set which Chromium browser to use via command-line parameters:
```zsh
python SCRIPT.py --chromium # Use the unbranded Chromium browser
@@ -194,11 +155,13 @@ sb = sb_cdp.Chrome(use_chromium=True)
--------
-
π§ͺ Comprehensive E2E Testing with pytest:
+
βοΈ Stealthy architecture flowchart:
-π The [SeleniumBase/examples/](https://github.com/seleniumbase/SeleniumBase/tree/master/examples) folder includes over 150 ready-to-run examples of E2E testing. Examples that start with `test_` or end with `_test.py`/`_tests.py` run with `pytest`. Other examples run directly with raw `python` (those generally start with `raw_` to avoid confusion).
+
+--------
+
π§ͺ Comprehensive E2E Testing with pytest:
π This example tests an e-commerce site with pytest:
@@ -228,6 +191,8 @@ class MyTestClass(BaseCase):
+π₯· For stealth with `pytest`, add `--uc` as a command-line option.
+
--------
π This example tests another e-commerce site with pytest:
@@ -254,7 +219,7 @@ pytest test_demo_site.py
> Easy to type, click, select, toggle, drag & drop, and more.
-(For more examples, see the SeleniumBase/examples/ folder.)
+π For more examples, see the SeleniumBase/examples/ folder.
--------
From fed0ba860efd7df55aad2d2f3cea91f5d3042948 Mon Sep 17 00:00:00 2001
From: Michael Mintz
Date: Wed, 7 Oct 2026 23:10:19 -0400
Subject: [PATCH 5/6] Update MCP server versioning
---
mcp_servers/pyproject.toml | 2 +-
server.json | 4 ++--
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/mcp_servers/pyproject.toml b/mcp_servers/pyproject.toml
index 20cc6be8fbc..9f111277a69 100644
--- a/mcp_servers/pyproject.toml
+++ b/mcp_servers/pyproject.toml
@@ -1,6 +1,6 @@
[project]
name = "seleniumbase-mcp"
-version = "1.4.1dev0"
+version = "1.4.2dev0"
description = "MCP server exposing SeleniumBase CDP Mode as tools for MCP clients."
readme = "README.md"
requires-python = ">=3.10"
diff --git a/server.json b/server.json
index ad935e602f8..1f191ad18b4 100644
--- a/server.json
+++ b/server.json
@@ -3,7 +3,7 @@
"name": "io.github.seleniumbase/seleniumbase",
"title": "SeleniumBase MCP",
"description": "Stealthy browser automation, testing, and web-scraping via CDP Mode.",
- "version": "4.55.1",
+ "version": "4.55.2",
"repository": {
"url": "https://github.com/seleniumbase/SeleniumBase",
"source": "github"
@@ -13,7 +13,7 @@
{
"registryType": "pypi",
"identifier": "seleniumbase",
- "version": "4.55.1",
+ "version": "4.55.2",
"transport": {
"type": "stdio"
},
From 3b2a41da17ef79cd83156f088e55ec3233b7896b Mon Sep 17 00:00:00 2001
From: Michael Mintz
Date: Wed, 7 Oct 2026 23:10:33 -0400
Subject: [PATCH 6/6] Version 4.55.2
---
seleniumbase/__version__.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/seleniumbase/__version__.py b/seleniumbase/__version__.py
index 58f007ff262..9c740b77429 100755
--- a/seleniumbase/__version__.py
+++ b/seleniumbase/__version__.py
@@ -1,2 +1,2 @@
# seleniumbase package
-__version__ = "4.55.1"
+__version__ = "4.55.2"