Skip to content

Commit b9a7315

Browse files
authored
Merge pull request #4193 from seleniumbase/cdp-mode-patch-88
CDP Mode: Patch 88
2 parents 6d531b8 + 3914c2a commit b9a7315

File tree

14 files changed

+136
-13
lines changed

14 files changed

+136
-13
lines changed
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
from playwright.sync_api import sync_playwright
2+
from seleniumbase import sb_cdp
3+
4+
sb = sb_cdp.Chrome(locale="en")
5+
endpoint_url = sb.get_endpoint_url()
6+
7+
with sync_playwright() as p:
8+
browser = p.chromium.connect_over_cdp(endpoint_url)
9+
context = browser.contexts[0]
10+
page = context.pages[0]
11+
page.goto("https://www.cloudflare.com/login")
12+
sb.sleep(3)
13+
sb.solve_captcha()
14+
sb.sleep(3)
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
from playwright.sync_api import sync_playwright
2+
from seleniumbase import sb_cdp
3+
4+
sb = sb_cdp.Chrome()
5+
endpoint_url = sb.get_endpoint_url()
6+
7+
with sync_playwright() as p:
8+
browser = p.chromium.connect_over_cdp(endpoint_url)
9+
context = browser.contexts[0]
10+
page = context.pages[0]
11+
page.goto("https://www.nike.com/")
12+
page.click('[data-testid="user-tools-container"] search')
13+
search = "Pegasus"
14+
page.fill('input[type="search"]', search)
15+
sb.sleep(4)
16+
details = 'ul[data-testid*="products"] figure .details'
17+
items = page.locator(details)
18+
if items:
19+
print('**** Found results for "%s": ****' % search)
20+
for i in range(items.count()):
21+
item = items.nth(i)
22+
print(item.inner_text())
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
from playwright.sync_api import sync_playwright
2+
from seleniumbase import sb_cdp
3+
4+
sb = sb_cdp.Chrome(locale="en")
5+
endpoint_url = sb.get_endpoint_url()
6+
7+
with sync_playwright() as p:
8+
browser = p.chromium.connect_over_cdp(endpoint_url)
9+
context = browser.contexts[0]
10+
page = context.pages[0]
11+
page.goto("https://www.nordstrom.com/")
12+
sb.sleep(2)
13+
page.click("input#keyword-search-input")
14+
sb.sleep(0.8)
15+
search = "cocktail dresses for women teal"
16+
sb.press_keys("input#keyword-search-input", search + "\n")
17+
sb.sleep(2.2)
18+
for i in range(17):
19+
sb.scroll_down(16)
20+
sb.sleep(0.14)
21+
print('*** Nordstrom Search for "%s":' % search)
22+
unique_item_text = []
23+
items = sb.find_elements("article")
24+
for item in items:
25+
description = item.querySelector("article h3")
26+
if description and description.text not in unique_item_text:
27+
unique_item_text.append(description.text)
28+
price_text = ""
29+
price = item.querySelector('div div span[aria-hidden="true"]')
30+
if price:
31+
price_text = price.text
32+
print("* %s (%s)" % (description.text, price_text))

examples/cdp_mode/raw_canvas.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
def get_canvas_pixel_colors_at_top_left(sb):
66
# Return the RGB colors of the canvas's top left pixel
7-
color = sb.cdp.evaluate(
7+
color = sb.evaluate(
88
"document.querySelector('canvas').getContext('2d')"
99
".getImageData(%s,%s,1,1).data;" % (0, 0)
1010
)
@@ -19,7 +19,7 @@ def get_canvas_pixel_colors_at_top_left(sb):
1919
sb.highlight("canvas")
2020
rgb = get_canvas_pixel_colors_at_top_left(sb)
2121
sb.assert_equal(rgb, [221, 242, 231]) # Looks greenish
22-
sb.cdp.click_with_offset("canvas", 500, 350)
22+
sb.click_with_offset("canvas", 500, 350)
2323
sb.highlight("canvas", loops=5)
2424
rgb = get_canvas_pixel_colors_at_top_left(sb)
2525
sb.assert_equal(rgb, [39, 43, 56]) # Blue by hamburger
@@ -29,7 +29,7 @@ def get_canvas_pixel_colors_at_top_left(sb):
2929
url = "https://seleniumbase.io/other/canvas"
3030
sb.activate_cdp_mode(url)
3131
sb.assert_title_contains("Canvas")
32-
sb.cdp.click_with_offset("canvas", 0, 0, center=True)
32+
sb.click_with_offset("canvas", 0, 0, center=True)
3333
sb.sleep(1)
3434
sb.uc_gui_press_key("ENTER")
3535
sb.sleep(0.5)

examples/cdp_mode/raw_ralphlauren.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
sb.open(url)
77
sb.sleep(1.2)
88
if not sb.is_element_present('[title="Locate Stores"]'):
9-
sb.cdp.evaluate("window.location.reload();")
9+
sb.evaluate("window.location.reload();")
1010
sb.sleep(1.2)
1111
category = "women"
1212
search = "Dresses"

examples/cdp_mode/raw_totalwine.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
search_box = 'input[data-at="header-search-text"]'
99
search = "The Land by Psagot Cabernet"
1010
if not sb.is_element_present(search_box):
11-
sb.cdp.evaluate("window.location.reload();")
11+
sb.evaluate("window.location.reload();")
1212
sb.sleep(1.8)
1313
sb.click_if_visible("#onetrust-close-btn-container button")
1414
sb.sleep(0.5)

examples/cdp_mode/raw_zoro.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
search = "Flir Thermal Camera"
1010
required_text = "Camera"
1111
if not sb.is_element_present(search_box):
12-
sb.cdp.evaluate("window.location.reload();")
12+
sb.evaluate("window.location.reload();")
1313
sb.sleep(1.2)
1414
sb.click(search_box)
1515
sb.sleep(1.2)

help_docs/method_summary.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,7 @@ self.load_html_string(html_string, new_page=True)
144144
self.set_content(html_string, new_page=False)
145145
self.load_html_file(html_file, new_page=True)
146146
self.open_html_file(html_file)
147+
self.evaluate(expression)
147148
self.execute_script(script, *args, **kwargs)
148149
self.execute_cdp_cmd(script, *args, **kwargs)
149150
self.execute_async_script(script, timeout=None)

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.45.7"
2+
__version__ = "4.45.8"

seleniumbase/core/browser_launcher.py

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6011,8 +6011,18 @@ def get_local_driver(
60116011
time.sleep(0.003)
60126012
driver.switch_to.window(driver.window_handles[0])
60136013
time.sleep(0.003)
6014-
driver.connect()
6015-
time.sleep(0.003)
6014+
# seleniumbase/SeleniumBase/discussions/4190
6015+
if getattr(sb_config, "skip_133_patch", None):
6016+
# To skip the connect() patch for Chrome 133+:
6017+
# from seleniumbase import config as sb_config
6018+
# sb_config.skip_133_patch = True
6019+
# (Do the above before launching the browser.)
6020+
pass
6021+
else:
6022+
# This fixes an issue on Chrome 133+
6023+
# (Some people might not need it though.)
6024+
driver.connect()
6025+
time.sleep(0.003)
60166026
if mobile_emulator:
60176027
uc_metrics = {}
60186028
if (

0 commit comments

Comments
 (0)