Skip to content

Commit 5afcfec

Browse files
authored
Merge pull request #4208 from seleniumbase/cdp-mode-patch-91
CDP Mode: Patch 91
2 parents 64a2b46 + 79c02c7 commit 5afcfec

File tree

15 files changed

+161
-79
lines changed

15 files changed

+161
-79
lines changed

examples/cdp_mode/ReadMe.md

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -202,9 +202,13 @@ with SB(uc=True, test=True, locale="en") as sb:
202202
sb.type('input[id="search-term"]', location)
203203
sb.sleep(1.2)
204204
sb.click('li[data-js="suggestion"]')
205-
sb.sleep(1.2)
205+
sb.sleep(0.6)
206+
sb.click_if_visible('button[aria-label="Close"]')
207+
sb.sleep(0.6)
206208
sb.click("button.be-button-shop")
207-
sb.sleep(6)
209+
sb.sleep(1)
210+
sb.click_if_visible('[label="Find Hotels"]')
211+
sb.sleep(5)
208212
card_info = 'div[data-booking-status="BOOKABLE"] [class*="HotelCard_info"]'
209213
hotels = sb.select_all(card_info)
210214
print("Hyatt Hotels in %s:" % location)
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
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+
url = (
12+
"https://www.gassaferegister.co.uk/gas-safety"
13+
"/gas-safety-certificates-records/building-regulations-certificate"
14+
"/order-replacement-building-regulations-certificate/"
15+
)
16+
page.goto(url)
17+
sb.sleep(0.5)
18+
sb.solve_captcha()
19+
page.wait_for_selector("#SearchTerm")
20+
allow_cookies = 'button:contains("Allow all cookies")'
21+
sb.click_if_visible(allow_cookies, timeout=2)
22+
sb.sleep(1)
23+
page.fill("#SearchTerm", "Hydrogen")
24+
page.click("button.search-button")
25+
sb.sleep(3)
26+
items = page.locator("div.search-result")
27+
for i in range(items.count()):
28+
item_text = items.nth(i).inner_text()
29+
print(item_text.replace("\n\n", "\n") + "\n")
30+
sb.scroll_to_bottom()
31+
sb.sleep(1)
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
from playwright.sync_api import sync_playwright
2+
from seleniumbase import sb_cdp
3+
4+
sb = sb_cdp.Chrome(use_chromium=True)
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+
search = "reddit+scraper"
12+
url = f"https://www.reddit.com/r/webscraping/search/?q={search}"
13+
page.goto(url)
14+
sb.solve_captcha() # Might not be needed
15+
sb.sleep(1)
16+
post_title = '[data-testid="post-title"]'
17+
page.wait_for_selector(post_title)
18+
for i in range(8):
19+
sb.scroll_down(25)
20+
sb.sleep(0.2)
21+
print('*** Reddit Posts for "%s":' % search)
22+
items = page.locator(post_title)
23+
for i in range(items.count()):
24+
item_text = items.nth(i).inner_text()
25+
print("* " + item_text)

examples/cdp_mode/raw_easyjet.py

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -3,31 +3,29 @@
33
with SB(uc=True, test=True, locale="en", ad_block=True) as sb:
44
url = "https://www.easyjet.com/en/"
55
sb.activate_cdp_mode(url)
6-
sb.sleep(2)
7-
sb.click_if_visible("button#ensCloseBanner")
8-
sb.sleep(1.2)
6+
sb.sleep(1.5)
7+
sb.click_if_visible("button#ensRejectAds", timeout=2)
8+
sb.sleep(1)
99
sb.click('input[name="from"]')
10-
sb.sleep(1.2)
10+
sb.sleep(1)
1111
sb.type('input[name="from"]', "London Gatwick")
12-
sb.sleep(0.6)
13-
sb.click_if_visible("button#ensCloseBanner")
14-
sb.sleep(0.6)
12+
sb.sleep(1)
1513
sb.click('span[data-testid="airport-name"]')
16-
sb.sleep(1.2)
14+
sb.sleep(1)
1715
sb.type('input[name="to"]', "Paris")
18-
sb.sleep(1.2)
16+
sb.sleep(1)
1917
sb.click('span[data-testid="airport-name"]')
20-
sb.sleep(1.2)
18+
sb.sleep(1)
2119
sb.click('input[name="when"]')
22-
sb.sleep(1.2)
20+
sb.sleep(1)
2321
sb.click('[data-testid="month"]:last-of-type [aria-disabled="false"]')
24-
sb.sleep(1.2)
22+
sb.sleep(1)
2523
sb.click('[data-testid="month"]:last-of-type [aria-disabled="false"]')
26-
sb.sleep(1.2)
24+
sb.sleep(1)
2725
sb.click('button[data-testid="submit"]')
28-
sb.sleep(4.2)
26+
sb.sleep(4)
2927
sb.connect()
30-
sb.sleep(1.2)
28+
sb.sleep(1)
3129
for window in sb.driver.window_handles:
3230
sb.switch_to_window(window)
3331
if "/buy/flights" in sb.get_current_url():

examples/cdp_mode/raw_gas_records.py

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,21 +8,18 @@
88
"/order-replacement-building-regulations-certificate/"
99
)
1010
sb.activate_cdp_mode(url)
11-
sb.sleep(0.6)
11+
sb.sleep(0.5)
1212
sb.solve_captcha()
13-
sb.sleep(1)
1413
sb.wait_for_element("#SearchTerm", timeout=5)
1514
sb.sleep(2)
1615
allow_cookies = 'button:contains("Allow all cookies")'
1716
sb.click_if_visible(allow_cookies, timeout=2)
18-
sb.sleep(1.2)
17+
sb.sleep(1)
1918
sb.press_keys("#SearchTerm", "Hydrogen")
20-
sb.sleep(0.5)
2119
sb.click("button.search-button")
2220
sb.sleep(3)
2321
results = sb.find_elements("div.search-result")
2422
for result in results:
25-
print(result.text.replace(" " * 12, " ").strip())
26-
print()
23+
print(result.text.replace(" " * 12, " ").strip() + "\n")
2724
sb.scroll_to_bottom()
2825
sb.sleep(1)

examples/cdp_mode/raw_hyatt.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,13 @@
1212
sb.type('input[id="search-term"]', location)
1313
sb.sleep(1.2)
1414
sb.click('li[data-js="suggestion"]')
15-
sb.sleep(1.2)
15+
sb.sleep(0.6)
16+
sb.click_if_visible('button[aria-label="Close"]')
17+
sb.sleep(0.6)
1618
sb.click("button.be-button-shop")
17-
sb.sleep(6)
19+
sb.sleep(1)
20+
sb.click_if_visible('[label="Find Hotels"]')
21+
sb.sleep(5)
1822
card_info = 'div[data-booking-status="BOOKABLE"] [class*="HotelCard_info"]'
1923
hotels = sb.select_all(card_info)
2024
print("Hyatt Hotels in %s:" % location)

examples/cdp_mode/raw_priceline.py

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from seleniumbase import SB
22

3-
with SB(uc=True, test=True, locale="en") as sb:
3+
with SB(uc=True, test=True, locale="en", guest=True, ad_block=True) as sb:
44
url = "https://www.priceline.com"
55
sb.activate_cdp_mode(url)
66
sb.sleep(1.8)
@@ -9,19 +9,15 @@
99
location = "Portland, OR"
1010
selection = "Oregon, United States" # (Dropdown option)
1111
sb.press_keys('input[name="endLocation"]', location)
12-
sb.sleep(1.5)
12+
sb.sleep(0.5)
1313
sb.click_if_visible('input[name="endLocation"]')
14-
sb.sleep(0.6)
15-
sb.click(selection)
16-
sb.sleep(1.5)
17-
sb.click('button[aria-label="Dismiss calendar"]')
1814
sb.sleep(0.5)
15+
sb.click(selection)
16+
sb.scroll_down(25)
17+
sb.click_if_visible('button[aria-label="Dismiss calendar"]')
18+
sb.click_if_visible("div.sidebar-iframe-close")
19+
sb.click_if_visible('div[aria-label="Close Modal"]')
1920
sb.click('button[data-testid="HOTELS_SUBMIT_BUTTON"]')
20-
sb.sleep(0.5)
21-
if sb.is_element_visible('[aria-label="Close Modal"]'):
22-
sb.click('[aria-label="Close Modal"]')
23-
sb.sleep(0.5)
24-
sb.click('button[data-testid="HOTELS_SUBMIT_BUTTON"]')
2521
sb.sleep(4.8)
2622
if len(sb.cdp.get_tabs()) > 1:
2723
sb.cdp.close_active_tab()

examples/cdp_mode/raw_ralphlauren.py

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,8 @@
22

33
with SB(uc=True, test=True, locale="en") as sb:
44
url = "https://www.ralphlauren.com.au/"
5-
sb.activate_cdp_mode()
6-
sb.open(url)
7-
sb.sleep(1.2)
5+
sb.activate_cdp_mode(url)
6+
sb.sleep(1.6)
87
if not sb.is_element_present('[title="Locate Stores"]'):
98
sb.evaluate("window.location.reload();")
109
sb.sleep(1.2)
@@ -15,8 +14,8 @@
1514
sb.click('a:contains("%s")' % search)
1615
sb.sleep(3.8)
1716
for i in range(6):
18-
sb.scroll_down(34)
19-
sb.sleep(0.25)
17+
sb.scroll_down(25)
18+
sb.sleep(0.2)
2019
print('*** Ralph Lauren Search for "%s":' % search)
2120
unique_item_text = []
2221
items = sb.find_elements('div.product-data')

examples/cdp_mode/raw_zoro.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,15 @@
1616
sb.press_keys(search_box, search)
1717
sb.sleep(0.6)
1818
sb.click('button[data-za="searchButton"]')
19-
sb.sleep(3.8)
19+
sb.sleep(3.2)
20+
sb.wait_for_element('[data-za="product-cards-list"]', timeout=5)
2021
print('*** Zoro Search for "%s":' % search)
2122
print(' (Results must contain "%s".)' % required_text)
2223
unique_item_text = []
23-
items = sb.find_elements('div[data-za="search-product-card"]')
24+
items = sb.find_elements('[data-za="search-product-card"]')
2425
for item in items:
2526
if required_text in item.text:
26-
description = item.querySelector('div[data-za="product-title"]')
27+
description = item.querySelector('[data-za="product-title"]')
2728
if description and description.text not in unique_item_text:
2829
unique_item_text.append(description.text)
2930
print("* " + description.text)

examples/presenter/uc_presentation_4.py

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -768,7 +768,9 @@ def test_presentation_4(self):
768768
)
769769
self.begin_presentation(filename="uc_presentation.html")
770770

771-
with SB(uc=True, test=True, locale="en") as sb:
771+
with SB(
772+
uc=True, test=True, locale="en", guest=True, ad_block=True
773+
) as sb:
772774
url = "https://www.priceline.com"
773775
sb.activate_cdp_mode(url)
774776
sb.sleep(1.8)
@@ -777,19 +779,15 @@ def test_presentation_4(self):
777779
location = "Portland, Oregon, US"
778780
selection = "Oregon, United States" # (Dropdown option)
779781
sb.press_keys('input[name="endLocation"]', location)
780-
sb.sleep(1.5)
782+
sb.sleep(0.5)
781783
sb.click_if_visible('input[name="endLocation"]')
782-
sb.sleep(0.6)
783-
sb.click(selection)
784-
sb.sleep(1.5)
785-
sb.click('button[aria-label="Dismiss calendar"]')
786784
sb.sleep(0.5)
785+
sb.click(selection)
786+
sb.scroll_down(25)
787+
sb.click_if_visible('button[aria-label="Dismiss calendar"]')
788+
sb.click_if_visible("div.sidebar-iframe-close")
789+
sb.click_if_visible('div[aria-label="Close Modal"]')
787790
sb.click('button[data-testid="HOTELS_SUBMIT_BUTTON"]')
788-
sb.sleep(0.5)
789-
if sb.is_element_visible('[aria-label="Close Modal"]'):
790-
sb.click('[aria-label="Close Modal"]')
791-
sb.sleep(0.5)
792-
sb.click('button[data-testid="HOTELS_SUBMIT_BUTTON"]')
793791
sb.sleep(4.8)
794792
if len(sb.cdp.get_tabs()) > 1:
795793
sb.cdp.close_active_tab()

0 commit comments

Comments
 (0)