Skip to content

Commit a014dc9

Browse files
authored
Merge pull request #3984 from seleniumbase/cdp-mode-patch-57
CDP Mode: Patch 57
2 parents decb00d + 0857c3b commit a014dc9

File tree

16 files changed

+158
-136
lines changed

16 files changed

+158
-136
lines changed

examples/cdp_mode/raw_basic_async.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
import asyncio
22
from seleniumbase import cdp_driver
3+
from seleniumbase import decorators
34

45

56
async def main():
67
url = "seleniumbase.io/simple/login"
7-
driver = await cdp_driver.start_async(incognito=True)
8-
page = await driver.get(url)
8+
driver = await cdp_driver.start_async()
9+
page = await driver.get(url, lang="en")
910
print(await page.evaluate("document.title"))
1011
element = await page.select("#username")
1112
await element.send_keys_async("demo_user")
@@ -24,4 +25,5 @@ async def main():
2425
if __name__ == "__main__":
2526
# Call an async function with awaited methods
2627
loop = asyncio.new_event_loop()
27-
loop.run_until_complete(main())
28+
with decorators.print_runtime("raw_basic_async.py"):
29+
loop.run_until_complete(main())

examples/cdp_mode/raw_cdp.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,9 @@ def main():
2121
sb.press_keys(where_to, location)
2222
sb.sleep(1)
2323
sb.gui_click_element(button)
24-
sb.sleep(3)
24+
sb.sleep(2)
25+
sb.click_if_visible('button[aria-label="Close"]')
26+
sb.sleep(1)
2527
print(sb.get_title())
2628
print("************")
2729
for i in range(8):

examples/cdp_mode/raw_multi_async.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
from concurrent.futures import ThreadPoolExecutor
44
from random import randint
55
from seleniumbase import cdp_driver
6+
from seleniumbase import decorators
67

78

89
async def main(url):
@@ -24,7 +25,8 @@ def set_up_loop(url):
2425

2526

2627
if __name__ == "__main__":
27-
urls = ["https://seleniumbase.io/demo_page" for i in range(4)]
28-
with ThreadPoolExecutor(max_workers=len(urls)) as executor:
29-
for url in urls:
30-
executor.submit(set_up_loop, url)
28+
urls = ["https://seleniumbase.io/demo_page" for i in range(5)]
29+
with decorators.print_runtime("raw_multi_async.py"):
30+
with ThreadPoolExecutor(max_workers=len(urls)) as executor:
31+
for url in urls:
32+
executor.submit(set_up_loop, url)
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
# Testing multiple CDP drivers using the sync API
2+
from concurrent.futures import ThreadPoolExecutor
3+
from random import randint
4+
from seleniumbase import decorators
5+
from seleniumbase import sb_cdp
6+
7+
8+
def main(url):
9+
sb = sb_cdp.Chrome(url, lang="en")
10+
sb.set_window_rect(randint(4, 680), randint(8, 380), 840, 520)
11+
sb.sleep(2.2)
12+
sb.gui_click_captcha()
13+
sb.sleep(2)
14+
sb.driver.quit()
15+
16+
17+
if __name__ == "__main__":
18+
urls = ["https://seleniumbase.io/apps/turnstile" for i in range(5)]
19+
with decorators.print_runtime("raw_multi_captcha.py"):
20+
with ThreadPoolExecutor(max_workers=len(urls)) as executor:
21+
for url in urls:
22+
executor.submit(main, url)

examples/cdp_mode/raw_multi_cdp.py

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,23 @@
11
# Testing multiple CDP drivers using the sync API
22
from concurrent.futures import ThreadPoolExecutor
33
from random import randint
4+
from seleniumbase import decorators
45
from seleniumbase import sb_cdp
56

67

78
def main(url):
8-
sb = sb_cdp.Chrome(url)
9-
sb.set_window_rect(randint(4, 720), randint(8, 410), 800, 500)
9+
sb = sb_cdp.Chrome(url, lang="en")
10+
sb.set_window_rect(randint(4, 680), randint(8, 380), 840, 520)
1011
sb.press_keys("input", "Text")
1112
sb.highlight("button")
1213
sb.click("button")
1314
sb.sleep(2)
15+
sb.driver.quit()
1416

1517

1618
if __name__ == "__main__":
17-
urls = ["https://seleniumbase.io/demo_page" for i in range(4)]
18-
with ThreadPoolExecutor(max_workers=len(urls)) as executor:
19-
for url in urls:
20-
executor.submit(main, url)
19+
urls = ["https://seleniumbase.io/demo_page" for i in range(5)]
20+
with decorators.print_runtime("raw_multi_cdp.py"):
21+
with ThreadPoolExecutor(max_workers=len(urls)) as executor:
22+
for url in urls:
23+
executor.submit(main, url)

examples/hack_the_planet.py

Lines changed: 4 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -130,25 +130,12 @@ def test_all_your_base_are_belong_to_us(self):
130130
self.highlight("section.crayons-card", loops=7, scroll=False)
131131

132132
self.open("https://store.steampowered.com/")
133+
self.set_text_content('a[href*="steamcommunity.com/"]', " ")
133134
self.set_text_content('div.content a[href*="/about/"]', " ")
134135
self.set_text_content('div.content a[href*="help.steam"]', aybabtu)
135-
self.set_text_content("#foryou_tab a", "ALL")
136-
self.set_text_content("#noteworthy_tab a", "YOUR BASE")
137-
self.set_text_content("#genre_tab a", "ARE")
138-
self.set_text_content('span:contains("Points Shop")', "BELONG")
139-
self.set_text_content('span:contains("News")', "TO")
140-
self.set_text_content('span:contains("Labs")', "US")
141-
self.set_value("input#store_nav_search_term", ayb + " . . . .")
142-
self.highlight('div.content a[href*="help.steam"]', loops=6)
143-
self.highlight("#store_nav_area", loops=2, scroll=False)
144-
self.highlight("#foryou_tab a", loops=1, scroll=False)
145-
self.highlight("#noteworthy_tab a", loops=3, scroll=False)
146-
self.highlight("#genre_tab a", loops=1, scroll=False)
147-
self.highlight('span:contains("BELONG")', loops=1, scroll=False)
148-
self.highlight('span:contains("TO")', loops=1, scroll=False)
149-
self.highlight('span:contains("US")', loops=2, scroll=False)
150-
self.js_click('input[id*="nav_search"]')
151-
self.highlight('input[id*="nav_search"]', loops=6, scroll=False)
136+
zoom_in = '[href*="help.steam"]{zoom: 1.5;-moz-transform: scale(1.5);}'
137+
self.add_css_style(zoom_in)
138+
self.highlight('div.content a[href*="help.steam"]', loops=12)
152139

153140
self.open("https://xkcd.com/286/")
154141
self.set_text_content('a[href="/archive"]', "ALL")

examples/visual_testing/layout_test.py

Lines changed: 10 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -3,31 +3,22 @@
33

44

55
class VisualLayoutTests(BaseCase):
6-
def test_applitools_layout_change(self):
6+
def test_xkcd_layout_change(self):
77
self.demo_mode = False # (It would interfere with html comparisons)
8-
self.open("https://applitools.com/helloworld/?diff1")
9-
self.wait_for_element('a[href="?diff1"]')
8+
self.open("https://xkcd.com/1424/")
109
print('\nCreating baseline in "visual_baseline" folder.')
1110
self.sleep(0.08)
12-
self.check_window(name="helloworld", baseline=True)
13-
# Click a button that changes the text of an element
14-
# (Text changes do not impact visual comparisons)
15-
self.sleep(0.06)
16-
self.click('a[href="?diff1"]')
17-
self.sleep(0.14)
11+
self.check_window(name="xkcd", baseline=True)
12+
# Go to a different comic
13+
self.open("https://xkcd.com/1425/")
1814
# Verify html tags match the baseline
19-
self.check_window(name="helloworld", level=1)
15+
self.check_window(name="xkcd", level=1)
2016
# Verify html tags and attribute names match the baseline
21-
self.check_window(name="helloworld", level=2)
22-
# Verify html tags and attribute values match the baseline
23-
self.check_window(name="helloworld", level=3)
24-
# Click a button that makes a hidden element visible
25-
self.click("button")
26-
self.check_window(name="helloworld", level=1)
27-
self.check_window(name="helloworld", level=2)
17+
self.check_window(name="xkcd", level=2)
18+
# Verify html tags and attribute values don't match the baseline
2819
with self.assert_raises(Exception):
29-
self.check_window(name="helloworld", level=3)
20+
self.check_window(name="xkcd", level=3)
3021
# Now that we know the Exception was raised as expected,
3122
# let's print out the comparison results by running a Level-0 check.
3223
# (NOTE: Running with level-0 will print but NOT raise an Exception.)
33-
self.check_window(name="helloworld", level=0)
24+
self.check_window(name="xkcd", level=0)

examples/visual_testing/test_layout_fail.py

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -15,17 +15,6 @@ def test_python_home_change(self, sb):
1515

1616

1717
class VisualLayoutFailureTests(BaseCase):
18-
def test_applitools_change(self):
19-
self.open("https://applitools.com/helloworld/?diff1")
20-
print('\nCreating baseline in "visual_baseline" folder.')
21-
self.check_window(name="helloworld", baseline=True)
22-
# Click a button that changes the text of an element
23-
self.click('a[href="?diff1"]')
24-
# Click a button that makes a hidden element visible
25-
self.slow_click("button")
26-
print("(This test should fail)") # due to image now seen
27-
self.check_window(name="helloworld", level=3)
28-
2918
def test_xkcd_logo_change(self):
3019
self.open("https://xkcd.com/554/")
3120
print('\nCreating baseline in "visual_baseline" folder.')

requirements.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ rich>=14.1.0,<15
8080
# ("pip install -r requirements.txt" also installs this, but "pip install -e ." won't.)
8181

8282
coverage>=7.6.1;python_version<"3.9"
83-
coverage>=7.10.6;python_version>="3.9"
83+
coverage>=7.10.7;python_version>="3.9"
8484
pytest-cov>=5.0.0;python_version<"3.9"
8585
pytest-cov>=7.0.0;python_version>="3.9"
8686
flake8==5.0.4;python_version<"3.9"

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.41.8"
2+
__version__ = "4.41.9"

0 commit comments

Comments
 (0)