Skip to content

Commit 2f5838d

Browse files
authored
Merge pull request #2261 from seleniumbase/fix-internal-webdriver-issue
Prevent internal WebDriver issue from disrupting tests
2 parents 62e7a04 + 7d176dd commit 2f5838d

10 files changed

+54
-24
lines changed

examples/parameterized_test.py

+1
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ class SearchTests(BaseCase):
1313
)
1414
def test_parameterized_search(self, search_term, keyword, title_text):
1515
self.open("https://seleniumbase.io/help_docs/how_it_works/")
16+
self.assert_title_contains("SeleniumBase Docs")
1617
self.type('input[aria-label="Search"]', search_term)
1718
self.click('mark:contains("%s")' % keyword)
1819
self.assert_title_contains(title_text)

examples/raw_form_turnstile.py

+8-8
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,12 @@
11
from seleniumbase import SB
22

33

4+
def open_the_form_turnstile_page(sb):
5+
sb.driver.uc_open_with_reconnect(
6+
"https://seleniumbase.io/apps/form_turnstile", reconnect_time=2.27,
7+
)
8+
9+
410
def click_turnstile_and_verify(sb):
511
sb.driver.reconnect(0.1)
612
iframe = sb.driver.find_element("iframe")
@@ -11,17 +17,11 @@ def click_turnstile_and_verify(sb):
1117

1218

1319
with SB(uc=True, test=True) as sb:
14-
sb.driver.uc_open_with_reconnect(
15-
"https://seleniumbase.io/apps/form_turnstile",
16-
reconnect_time=2.33,
17-
)
20+
open_the_form_turnstile_page(sb)
1821
try:
1922
click_turnstile_and_verify(sb)
2023
except Exception:
21-
sb.driver.uc_open_with_reconnect(
22-
"https://seleniumbase.io/apps/form_turnstile",
23-
reconnect_time=2.33,
24-
)
24+
open_the_form_turnstile_page(sb)
2525
click_turnstile_and_verify(sb)
2626
sb.press_keys("#name", "SeleniumBase")
2727
sb.press_keys("#email", "[email protected]")

examples/raw_turnstile.py

+15-4
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,27 @@
11
from seleniumbase import SB
22

3-
with SB(uc=True, test=True) as sb:
3+
4+
def open_the_turnstile_page(sb):
45
sb.driver.uc_open_with_reconnect(
5-
"https://seleniumbase.io/apps/turnstile",
6-
reconnect_time=2.33,
6+
"https://seleniumbase.io/apps/turnstile", reconnect_time=2.27,
77
)
8+
9+
10+
def click_turnstile_and_verify(sb):
811
sb.driver.reconnect(0.1)
912
iframe = sb.driver.find_element("iframe")
1013
sb.driver.reconnect(0.5)
1114
sb.driver.switch_to.frame(iframe)
1215
sb.driver.uc_click("span.mark")
13-
sb.switch_to_default_content()
1416
sb.assert_element("img#captcha-success", timeout=3.33)
17+
18+
19+
with SB(uc=True, test=True) as sb:
20+
open_the_turnstile_page(sb)
21+
try:
22+
click_turnstile_and_verify(sb)
23+
except Exception:
24+
open_the_turnstile_page(sb)
25+
click_turnstile_and_verify(sb)
1526
sb.set_messenger_theme(location="top_left")
1627
sb.post_message("Selenium wasn't detected!", duration=3)

examples/test_coffee_cart.py

+4
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,13 @@ class CoffeeCartTest(BaseCase):
77
def test_coffee_cart(self):
88
self.open("https://seleniumbase.io/coffee/")
99
self.assert_title("Coffee Cart")
10+
self.assert_element('button:contains("Total: $0.00")')
1011
self.click('div[data-sb="Cappuccino"]')
12+
self.assert_exact_text("cart (1)", 'a[aria-label="Cart page"]')
1113
self.click('div[data-sb="Flat-White"]')
14+
self.assert_exact_text("cart (2)", 'a[aria-label="Cart page"]')
1215
self.click('div[data-sb="Cafe-Latte"]')
16+
self.assert_exact_text("cart (3)", 'a[aria-label="Cart page"]')
1317
self.click('a[aria-label="Cart page"]')
1418
self.assert_exact_text("Total: $53.00", "button.pay")
1519
self.click("button.pay")

examples/test_double_click.py

+2
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,15 @@
66
class DoubleClickTests(BaseCase):
77
def test_switch_to_frame_and_double_click(self):
88
self.open("https://seleniumbase.io/w3schools/double_click")
9+
self.assert_title("Double Click Testing")
910
self.click("button#runbtn")
1011
self.switch_to_frame("iframe#iframeResult")
1112
self.double_click('[ondblclick="myFunction()"]')
1213
self.assert_text("Hello World", "#demo")
1314

1415
def test_switch_to_frame_of_element_and_double_click(self):
1516
self.open("https://seleniumbase.io/w3schools/double_click")
17+
self.assert_title("Double Click Testing")
1618
self.click("button#runbtn")
1719
self.switch_to_frame_of_element('[ondblclick="myFunction()"]')
1820
self.double_click('[ondblclick="myFunction()"]')

examples/test_get_coffee.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,12 @@ class GetCoffeeTest(BaseCase):
77
def test_get_coffee(self):
88
self.open("https://seleniumbase.io/coffee/")
99
self.assert_title("Coffee Cart")
10-
self.assert_link_text("cart (0)")
11-
self.assert_element('[data-sb="Mocha"]')
10+
self.assert_exact_text("cart (0)", 'a[aria-label="Cart page"]')
11+
self.assert_element('div[data-sb="Mocha"]')
1212
self.click('div[data-sb="Mocha"]')
1313
self.assert_link_text("cart (1)")
1414
self.click_link_text("cart (1)")
15-
self.assert_exact_text("Total: $8.00", ".pay")
15+
self.assert_exact_text("Total: $8.00", "button.pay")
1616
self.click("button.pay")
1717
self.type("input#name", "Selenium Coffee")
1818
self.type("input#email", "[email protected]")

examples/visual_testing/layout_test.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,13 @@ def test_applitools_layout_change(self):
88
self.open("https://applitools.com/helloworld/?diff1")
99
self.wait_for_element('a[href="?diff1"]')
1010
print('\nCreating baseline in "visual_baseline" folder.')
11-
self.sleep(0.06)
11+
self.sleep(0.08)
1212
self.check_window(name="helloworld", baseline=True)
1313
# Click a button that changes the text of an element
1414
# (Text changes do not impact visual comparisons)
1515
self.sleep(0.06)
1616
self.click('a[href="?diff1"]')
17-
self.sleep(0.06)
17+
self.sleep(0.14)
1818
# Verify html tags match the baseline
1919
self.check_window(name="helloworld", level=1)
2020
# Verify html tags and attribute names match the baseline

mkdocs_build/requirements.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
regex>=2023.10.3
55
PyYAML>=6.0.1
66
pymdown-extensions>=10.3.1
7-
pipdeptree>=2.13.0
7+
pipdeptree>=2.13.1
88
python-dateutil>=2.8.2
99
Markdown==3.5.1
1010
markdown2==2.4.10

seleniumbase/__version__.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
# seleniumbase package
2-
__version__ = "4.21.0"
2+
__version__ = "4.21.1"

seleniumbase/fixtures/base_case.py

+17-5
Original file line numberDiff line numberDiff line change
@@ -321,11 +321,23 @@ def open(self, url):
321321
self.driver.get(url)
322322
else:
323323
raise
324-
if (
325-
self.driver.current_url == pre_action_url
326-
and pre_action_url != url
327-
):
328-
time.sleep(0.1) # Make sure load happens
324+
try:
325+
if (
326+
self.driver.current_url == pre_action_url
327+
and pre_action_url != url
328+
):
329+
time.sleep(0.1) # Make sure load happens
330+
except Exception:
331+
time.sleep(0.1) # First see if waiting helps
332+
try:
333+
self._check_browser()
334+
if not self.driver.current_url:
335+
raise Exception("No current URL!")
336+
except Exception:
337+
# Spin up a new driver with the URL
338+
self.driver = self.get_new_driver()
339+
self.driver.get(url)
340+
self._check_browser()
329341
if settings.WAIT_FOR_RSC_ON_PAGE_LOADS:
330342
if not self.undetectable:
331343
self.wait_for_ready_state_complete()

0 commit comments

Comments
 (0)