Skip to content

Commit a84f5c3

Browse files
authored
Merge pull request #3581 from seleniumbase/cdp-mode-patch-39
CDP Mode: Patch 39
2 parents aa0b70a + 17d5c36 commit a84f5c3

File tree

18 files changed

+131
-43
lines changed

18 files changed

+131
-43
lines changed

examples/cdp_mode/ReadMe.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -420,6 +420,13 @@ sb.cdp.minimize()
420420
sb.cdp.medimize()
421421
sb.cdp.set_window_rect()
422422
sb.cdp.reset_window_size()
423+
sb.cdp.switch_to_window(window)
424+
sb.cdp.switch_to_newest_window()
425+
sb.cdp.switch_to_tab(tab)
426+
sb.cdp.switch_to_newest_tab()
427+
sb.cdp.close_active_tab()
428+
sb.cdp.get_active_tab()
429+
sb.cdp.get_tabs()
423430
sb.cdp.get_window()
424431
sb.cdp.get_text(selector)
425432
sb.cdp.get_title()

examples/cdp_mode/raw_async.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,13 +51,14 @@ async def main():
5151
location = "Amsterdam"
5252
where_to = 'div[data-automation*="experiences"] input'
5353
button = 'button[data-automation*="experiences-search"]'
54+
sb.wait_for_text("Where to?")
5455
sb.gui_click_element(where_to)
5556
sb.press_keys(where_to, location)
5657
sb.sleep(1)
5758
sb.gui_click_element(button)
5859
sb.sleep(3)
5960
print(sb.get_title())
6061
print("************")
61-
cards = sb.select_all('h2[data-automation*="product-list-card"]')
62+
cards = sb.select_all('span[data-automation*="product-list-card"]')
6263
for card in cards:
6364
print("* %s" % card.text)

examples/cdp_mode/raw_cdp.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ def main():
1616
location = "Amsterdam"
1717
where_to = 'div[data-automation*="experiences"] input'
1818
button = 'button[data-automation*="experiences-search"]'
19+
sb.wait_for_text("Where to?")
1920
sb.gui_click_element(where_to)
2021
sb.press_keys(where_to, location)
2122
sb.sleep(1)
@@ -26,7 +27,7 @@ def main():
2627
for i in range(8):
2728
sb.scroll_down(50)
2829
sb.sleep(0.2)
29-
cards = sb.select_all('h2[data-automation*="product-list-card"]')
30+
cards = sb.select_all('span[data-automation*="product-list-card"]')
3031
for card in cards:
3132
print("* %s" % card.text)
3233

examples/cdp_mode/raw_cdp_with_sb.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
location = "Amsterdam"
1515
where_to = 'div[data-automation*="experiences"] input'
1616
button = 'button[data-automation*="experiences-search"]'
17+
sb.wait_for_text("Where to?")
1718
sb.cdp.gui_click_element(where_to)
1819
sb.press_keys(where_to, location)
1920
sb.sleep(1)
@@ -24,6 +25,6 @@
2425
for i in range(8):
2526
sb.cdp.scroll_down(50)
2627
sb.sleep(0.2)
27-
cards = sb.select_all('h2[data-automation*="product-list-card"]')
28+
cards = sb.select_all('span[data-automation*="product-list-card"]')
2829
for card in cards:
2930
print("* %s" % card.text)
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
"""A script that loads cookies to bypass login."""
2+
import asyncio
3+
import time
4+
from seleniumbase import cdp_driver
5+
6+
7+
# Log in to Swag Labs and save cookies
8+
async def get_login_cookies():
9+
url = "https://www.saucedemo.com"
10+
driver = await cdp_driver.start_async(incognito=True)
11+
page = await driver.get(url)
12+
element = await page.select("#user-name")
13+
await element.send_keys_async("standard_user")
14+
element = await page.select("#password")
15+
await element.send_keys_async("secret_sauce")
16+
element = await page.select('input[type="submit"]')
17+
await element.click_async()
18+
cookies = await driver.cookies.get_all()
19+
await page.close()
20+
return cookies
21+
22+
23+
# Load previously saved cookies to bypass login
24+
async def login_with_cookies(cookies):
25+
url_1 = "https://www.saucedemo.com"
26+
url_2 = "https://www.saucedemo.com/inventory.html"
27+
driver = await cdp_driver.start_async()
28+
page = await driver.get(url_1)
29+
await driver.cookies.set_all(cookies)
30+
await driver.get(url_2)
31+
await page.select("div.inventory_list")
32+
time.sleep(2)
33+
34+
35+
if __name__ == "__main__":
36+
loop = asyncio.new_event_loop()
37+
cookies = loop.run_until_complete(get_login_cookies())
38+
loop.run_until_complete(login_with_cookies(cookies))

examples/cdp_mode/raw_priceline.py

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

33
with SB(uc=True, test=True, locale="en", ad_block=True) as sb:
4-
window_handle = sb.driver.current_window_handle
54
url = "https://www.priceline.com"
65
sb.activate_cdp_mode(url)
76
sb.sleep(2.5)
@@ -17,17 +16,14 @@
1716
sb.sleep(1.5)
1817
sb.cdp.click('button[aria-label="Dismiss calendar"]')
1918
sb.sleep(4.5)
20-
sb.connect()
21-
if len(sb.driver.window_handles) > 1:
22-
sb.switch_to_window(window_handle)
23-
sb.driver.close()
24-
sb.sleep(0.2)
25-
sb.switch_to_newest_window()
19+
if len(sb.cdp.get_tabs()) > 1:
20+
sb.cdp.close_active_tab()
21+
sb.cdp.switch_to_newest_tab()
2622
sb.sleep(0.6)
2723
sb.sleep(0.8)
2824
for y in range(1, 9):
2925
sb.scroll_to_y(y * 400)
30-
sb.sleep(0.75)
26+
sb.sleep(0.5)
3127
hotel_names = sb.find_elements('a[data-autobot-element-id*="HOTEL_NAME"]')
3228
hotel_prices = sb.find_elements('span[font-size="4,,,5"]')
3329
print("Priceline Hotels in %s:" % location)

examples/presenter/uc_presentation_4.py

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -770,7 +770,6 @@ def test_presentation_4(self):
770770
self.begin_presentation(filename="uc_presentation.html")
771771

772772
with SB(uc=True, test=True, locale="en", ad_block=True) as sb:
773-
window_handle = sb.driver.current_window_handle
774773
url = "https://www.priceline.com"
775774
sb.activate_cdp_mode(url)
776775
sb.sleep(2.5)
@@ -786,22 +785,19 @@ def test_presentation_4(self):
786785
sb.sleep(1.5)
787786
sb.cdp.click('button[aria-label="Dismiss calendar"]')
788787
sb.sleep(4.5)
789-
sb.connect()
790-
if len(sb.driver.window_handles) > 1:
791-
sb.switch_to_window(window_handle)
792-
sb.driver.close()
793-
sb.sleep(0.2)
794-
sb.switch_to_newest_window()
788+
if len(sb.cdp.get_tabs()) > 1:
789+
sb.cdp.close_active_tab()
790+
sb.cdp.switch_to_newest_tab()
795791
sb.sleep(0.6)
796792
sb.sleep(0.8)
797793
for y in range(1, 9):
798794
sb.scroll_to_y(y * 400)
799-
sb.sleep(0.75)
795+
sb.sleep(0.5)
800796
hotel_names = sb.find_elements(
801797
'a[data-autobot-element-id*="HOTEL_NAME"]'
802798
)
803799
hotel_prices = sb.find_elements('span[font-size="4,,,5"]')
804-
print("\n\nPriceline Hotels in %s:" % location)
800+
print("Priceline Hotels in %s:" % location)
805801
print(sb.get_text('[data-testid="POPOVER-DATE-PICKER"]'))
806802
if len(hotel_names) == 0:
807803
print("No availability over the selected dates!")

help_docs/syntax_formats.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1072,7 +1072,7 @@ def main():
10721072
for i in range(8):
10731073
sb.scroll_down(50)
10741074
sb.sleep(0.2)
1075-
cards = sb.select_all('h2[data-automation*="product-list-card"]')
1075+
cards = sb.select_all('span[data-automation*="product-list-card"]')
10761076
for card in cards:
10771077
print("* %s" % card.text)
10781078

mkdocs_build/requirements.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ pathspec==0.12.1
1414
Babel==2.17.0
1515
paginate==0.5.7
1616
mkdocs==1.6.1
17-
mkdocs-material==9.6.5
17+
mkdocs-material==9.6.7
1818
mkdocs-exclude-search==0.6.6
1919
mkdocs-simple-hooks==0.1.5
2020
mkdocs-material-extensions==1.3.1

requirements.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ sortedcontainers==2.4.0
4949
execnet==2.1.1
5050
iniconfig==2.0.0
5151
pluggy==1.5.0
52-
pytest==8.3.4
52+
pytest==8.3.5
5353
pytest-html==4.0.2
5454
pytest-metadata==3.1.1
5555
pytest-ordering==0.6

0 commit comments

Comments
 (0)