Skip to content

Commit ccd27c0

Browse files
authored
Merge pull request #1194 from seleniumbase/safari-optimizations-and-test-updates
Safari optimizations and test updates
2 parents 4ed6d18 + 7db982c commit ccd27c0

File tree

10 files changed

+35
-18
lines changed

10 files changed

+35
-18
lines changed

examples/basic_test.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
"""
2-
Add an item to a shopping cart, and verify.
2+
Add an item to a shopping cart; verify; remove item; verify.
33
"""
44
from seleniumbase import BaseCase
55

@@ -15,4 +15,6 @@ def test_basics(self):
1515
self.click("#shopping_cart_container a")
1616
self.assert_exact_text("YOUR CART", "span.title")
1717
self.assert_text("Backpack", "div.cart_item")
18+
self.click('button:contains("Remove")') # HTML innerText
19+
self.assert_text_not_visible("Backpack", "div.cart_item")
1820
self.js_click("a#logout_sidebar_link")

examples/migration/protractor/example_test.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,10 @@ def test_todo_list(self):
1313
# Verify that the todos are listed
1414
todos = self.find_visible_elements(todo_selector)
1515
self.assert_equal(len(todos), 2)
16-
self.assert_equal(todos[1].text, "build an AngularJS app")
16+
self.assert_equal(todos[1].text.strip(), "build an AngularJS app")
1717
# Verify adding a new todo
1818
self.type('[ng-model="todoList.todoText"]', "write a protractor test")
1919
self.click('[value="add"]')
2020
todos = self.find_visible_elements(todo_selector)
2121
self.assert_equal(len(todos), 3)
22-
self.assert_equal(todos[2].text, "write a protractor test")
22+
self.assert_equal(todos[2].text.strip(), "write a protractor test")

examples/offline_examples/demo_page.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@
8181
margin: 2px;
8282
}
8383
h1 {
84-
font-size: 25px;
84+
font-size: 24px;
8585
color:#0066AA;
8686
}
8787
h2 {

examples/offline_examples/handle_alert_test.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,6 @@
55
@pytest.mark.offline # Can be run with: "pytest -m offline"
66
class OfflineTests(BaseCase):
77
def test_alerts(self):
8-
if self.browser == "safari":
9-
self.skip("This test doesn't run on Safari! (alert issues)")
108
self.open("data:,")
119
self.execute_script('window.alert("ALERT!!!");')
1210
self.sleep(1) # Not needed (Lets you see the alert pop up)

examples/raw_parameter_script.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
pure_python = True
3030

3131
if pure_python:
32-
sb = MyTestClass("test_basics")
32+
sb = MyTestClass("test_swag_labs")
3333
sb.browser = "chrome"
3434
sb.headless = False
3535
sb.headed = False
@@ -101,7 +101,7 @@
101101

102102
sb.setUp()
103103
try:
104-
sb.test_basics()
104+
sb.test_swag_labs()
105105
finally:
106106
sb.tearDown()
107107
del sb

examples/swag_labs_suite.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ def test_swag_labs_basic_flow(self, username):
7272
self.click("button#finish")
7373
self.assert_exact_text("THANK YOU FOR YOUR ORDER", "h2")
7474
self.assert_element("img.pony_express")
75-
self.click("#shopping_cart_container")
75+
self.click("#shopping_cart_container a")
7676
self.assert_element_absent("div.inventory_item_name")
7777
self.click("button#continue-shopping")
7878
self.assert_element_absent("span.shopping_cart_badge")

examples/test_show_file_choosers.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,8 @@ def test_show_file_choosers(self):
2121
my_file = "screenshot.png"
2222
file_path = os.path.join(dir_name, "example_logs/%s" % my_file)
2323
self.choose_file(choose_file_selector, file_path)
24-
seen_path = "%s\\%s" % ("C:\\fakepath", my_file)
25-
self.assert_attribute(choose_file_selector, "value", seen_path)
24+
if self.browser != "safari":
25+
seen_path = "%s\\%s" % ("C:\\fakepath", my_file)
26+
self.assert_attribute(choose_file_selector, "value", seen_path)
2627
self.demo_mode = True
2728
self.assert_element(uploaded_image)

examples/user_agent_test.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,13 @@ def test_user_agent(self):
1414
print("\n\nUser-Agent override = %s\n" % user_agent_detected)
1515
self.sleep(3)
1616

17+
if not self.is_chromium():
18+
# Skip the rest of the test if not using a Chromium browser
19+
msg = "\n* execute_cdp_cmd() is only for Chromium browsers"
20+
print(msg)
21+
self.skip(msg)
1722
try:
1823
# Now change the user-agent using "execute_cdp_cmd()"
19-
if not self.is_chromium():
20-
msg = "\n* execute_cdp_cmd() is only for Chromium browsers"
21-
print(msg)
22-
self.skip(msg)
2324
print("--------------------------")
2425
self.driver.execute_cdp_cmd(
2526
"Network.setUserAgentOverride", {

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__ = "2.4.4"
2+
__version__ = "2.4.5"

seleniumbase/fixtures/base_case.py

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ def test_anything(self):
4444
ElementClickInterceptedException as ECI_Exception,
4545
ElementNotInteractableException as ENI_Exception,
4646
MoveTargetOutOfBoundsException,
47+
NoSuchElementException,
4748
NoSuchWindowException,
4849
StaleElementReferenceException,
4950
WebDriverException,
@@ -364,6 +365,8 @@ def click(
364365
self.wait_for_angularjs(timeout=settings.MINI_TIMEOUT)
365366
if self.driver.current_url != pre_action_url:
366367
self.__ad_block_as_needed()
368+
if self.browser == "safari":
369+
time.sleep(0.02)
367370
if self.demo_mode:
368371
if self.driver.current_url != pre_action_url:
369372
self.__demo_mode_pause_if_active()
@@ -4866,14 +4869,26 @@ def choose_file(
48664869
if type(abs_path) is int or type(abs_path) is float:
48674870
abs_path = str(abs_path)
48684871
try:
4869-
element.send_keys(abs_path)
4872+
if self.browser == "safari":
4873+
try:
4874+
element.send_keys(abs_path)
4875+
except NoSuchElementException:
4876+
pass # May get this error on Safari even if upload works.
4877+
else:
4878+
element.send_keys(abs_path)
48704879
except (StaleElementReferenceException, ENI_Exception):
48714880
self.wait_for_ready_state_complete()
48724881
time.sleep(0.16)
48734882
element = self.wait_for_element_present(
48744883
selector, by=by, timeout=timeout
48754884
)
4876-
element.send_keys(abs_path)
4885+
if self.browser == "safari":
4886+
try:
4887+
element.send_keys(abs_path)
4888+
except NoSuchElementException:
4889+
pass # May get this error on Safari even if upload works.
4890+
else:
4891+
element.send_keys(abs_path)
48774892
if self.demo_mode:
48784893
if self.driver.current_url != pre_action_url:
48794894
self.__demo_mode_pause_if_active()

0 commit comments

Comments
 (0)