Skip to content

Commit fbd60e1

Browse files
authored
Merge pull request #4293 from seleniumbase/cdp-mode-patch-99
CDP Mode: Patch 99
2 parents 31da047 + b8ae001 commit fbd60e1

File tree

14 files changed

+61
-24
lines changed

14 files changed

+61
-24
lines changed

examples/cdp_mode/ReadMe.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -467,7 +467,7 @@ sb.cdp.close_active_tab()
467467
sb.cdp.get_active_tab()
468468
sb.cdp.get_tabs()
469469
sb.cdp.get_window()
470-
sb.cdp.get_text(selector)
470+
sb.cdp.get_text(selector="body")
471471
sb.cdp.get_title()
472472
sb.cdp.get_current_url()
473473
sb.cdp.get_origin()

examples/cdp_mode/raw_cdp_yc_news.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,4 @@
55
elements = sb.find_elements("span.titleline > a")
66
for element in elements:
77
print("* " + element.text)
8+
sb.driver.stop()
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
# Testing multiple CDP drivers using the async API
2+
import asyncio
3+
from concurrent.futures import ThreadPoolExecutor
4+
from random import randint
5+
from seleniumbase import cdp_driver
6+
from seleniumbase import decorators
7+
8+
9+
async def main(url):
10+
driver = await cdp_driver.start_async()
11+
page = await driver.get(url)
12+
await page.set_window_rect(randint(4, 600), randint(8, 410), 860, 500)
13+
await page.sleep(2.6)
14+
await page.solve_captcha()
15+
await page.sleep(2.2)
16+
if not await page.is_element_visible("img#captcha-success"):
17+
await page.solve_captcha()
18+
await page.sleep(2.2)
19+
driver.stop()
20+
21+
22+
def set_up_loop(url):
23+
loop = asyncio.new_event_loop()
24+
loop.run_until_complete(main(url))
25+
26+
27+
if __name__ == "__main__":
28+
urls = ["https://seleniumbase.io/apps/turnstile" for i in range(4)]
29+
with decorators.print_runtime("raw_multi_c_async.py"):
30+
with ThreadPoolExecutor(max_workers=len(urls)) as executor:
31+
for url in urls:
32+
executor.submit(set_up_loop, url)

examples/cdp_mode/raw_multi_captcha.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,13 @@
88
def main(url):
99
sb = sb_cdp.Chrome(url, lang="en", incognito=True)
1010
sb.set_window_rect(randint(4, 680), randint(8, 380), 840, 520)
11-
sb.sleep(2)
11+
sb.sleep(2.6)
1212
sb.gui_click_captcha()
13-
sb.sleep(2)
14-
sb.driver.quit()
13+
sb.sleep(2.2)
14+
if not sb.is_element_visible("img#captcha-success"):
15+
sb.solve_captcha()
16+
sb.sleep(2.2)
17+
sb.driver.stop()
1518

1619

1720
if __name__ == "__main__":

help_docs/cdp_mode_methods.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ sb.cdp.close_active_tab()
9393
sb.cdp.get_active_tab()
9494
sb.cdp.get_tabs()
9595
sb.cdp.get_window()
96-
sb.cdp.get_text(selector)
96+
sb.cdp.get_text(selector="body")
9797
sb.cdp.get_title()
9898
sb.cdp.get_current_url()
9999
sb.cdp.get_origin()

help_docs/method_summary.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ self.click_link(link_text, timeout=None)
7272
self.click_partial_link(partial_link_text, timeout=None)
7373
# Duplicates:
7474
# self.click_partial_link_text(partial_link_text, timeout=None)
75-
self.get_text(selector="html", by="css selector", timeout=None)
75+
self.get_text(selector="body", by="css selector", timeout=None)
7676
self.get_attribute(selector, attribute, by="css selector", timeout=None, hard_fail=True)
7777
self.set_attribute(selector, attribute, value, by="css selector", timeout=None, scroll=False)
7878
self.set_attributes(selector, attribute, value, by="css selector")
@@ -733,7 +733,7 @@ driver.is_element_visible(selector)
733733
driver.is_text_visible(text, selector)
734734
driver.is_exact_text_visible(text, selector)
735735
driver.is_attribute_present(selector, attribute)
736-
driver.get_text(selector)
736+
driver.get_text(selector="body")
737737
driver.js_click(selector)
738738
driver.get_active_element_css()
739739
driver.get_locale_code()

mkdocs_build/requirements.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
regex>=2026.2.28
55
pymdown-extensions>=10.21
6-
pipdeptree>=2.31.0
6+
pipdeptree>=2.33.0
77
python-dateutil>=2.8.2
88
Markdown==3.10.2
99
click==8.3.1

requirements.txt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,15 @@ packaging>=26.0
33
setuptools~=70.2;python_version<"3.10"
44
setuptools>=82.0.1;python_version>="3.10"
55
wheel>=0.46.3
6-
attrs>=25.4.0
6+
attrs>=26.1.0
77
certifi>=2026.2.25
88
exceptiongroup>=1.3.1
99
websockets~=15.0.1;python_version<"3.10"
1010
websockets>=16.0;python_version>="3.10"
1111
filelock~=3.19.1;python_version<"3.10"
1212
filelock>=3.25.2;python_version>="3.10"
1313
fasteners>=0.20
14-
mycdp>=1.3.6
14+
mycdp>=1.3.7
1515
pynose>=1.5.5
1616
platformdirs~=4.4.0;python_version<"3.10"
1717
platformdirs>=4.9.4;python_version>="3.10"
@@ -78,7 +78,7 @@ rich>=14.3.3,<15
7878

7979
coverage>=7.10.7;python_version<"3.10"
8080
coverage>=7.13.5;python_version>="3.10"
81-
pytest-cov>=7.0.0
81+
pytest-cov>=7.1.0
8282
flake8==7.3.0
8383
mccabe==0.7.0
8484
pyflakes==3.4.0

seleniumbase/__version__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
# seleniumbase package
2-
__version__ = "4.47.4"
2+
__version__ = "4.47.5"

seleniumbase/core/browser_launcher.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -296,6 +296,7 @@ def extend_driver(
296296
driver.switch_to_tab = DM.switch_to_tab
297297
driver.switch_to_frame = DM.switch_to_frame
298298
driver.reset_window_size = DM.reset_window_size
299+
driver.stop = driver.quit
299300
if recorder_ext:
300301
from seleniumbase.js_code.recorder_js import recorder_js
301302
recorder_code = (

0 commit comments

Comments
 (0)