Skip to content

Commit 41291bc

Browse files
authored
Merge pull request #1594 from seleniumbase/python-3.11-updates-and-more
Python 3.11 updates and more
2 parents 998f952 + d577ce9 commit 41291bc

File tree

5 files changed

+47
-25
lines changed

5 files changed

+47
-25
lines changed

mkdocs.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ theme:
4646
- toc.integrate
4747
- navigation.indexes
4848
# - navigation.sections
49-
- navigation.expand
49+
# - navigation.expand
5050
# - navigation.tabs
5151
- navigation.top
5252
- navigation.tracking

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.7.1"
2+
__version__ = "4.7.2"

seleniumbase/fixtures/base_case.py

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -474,17 +474,17 @@ def click(
474474
self.wait_for_ready_state_complete()
475475
except Exception:
476476
pass
477-
if self.browser == "safari":
478-
time.sleep(0.01)
479-
self.wait_for_ready_state_complete()
480-
time.sleep(0.01)
481477
if self.demo_mode:
482478
if self.driver.current_url != pre_action_url:
483479
self.__demo_mode_pause_if_active()
484480
else:
485481
self.__demo_mode_pause_if_active(tiny=True)
486482
elif self.slow_mode:
487483
self.__slow_mode_pause_if_active()
484+
elif self.browser == "safari":
485+
time.sleep(0.01)
486+
self.wait_for_ready_state_complete()
487+
time.sleep(0.01)
488488

489489
def slow_click(self, selector, by="css selector", timeout=None):
490490
"""Similar to click(), but pauses for a brief moment before clicking.
@@ -12252,7 +12252,7 @@ def __click_with_offset(
1225212252
self.execute_script(script)
1225312253
try:
1225412254
element_location = element.location["y"]
12255-
element_location = element_location - 130 + y
12255+
element_location = element_location - constants.Scroll.Y_OFFSET + y
1225612256
if element_location < 0:
1225712257
element_location = 0
1225812258
scroll_script = "window.scrollTo(0, %s);" % element_location
@@ -12352,8 +12352,8 @@ def __jquery_slow_scroll_to(self, selector, by="css selector"):
1235212352
selector = self.__make_css_match_first_element_only(selector)
1235312353
scroll_script = (
1235412354
"""jQuery([document.documentElement, document.body]).animate({"""
12355-
"""scrollTop: jQuery('%s').offset().top - 130}, %s);"""
12356-
% (selector, scroll_time_ms)
12355+
"""scrollTop: jQuery('%s').offset().top - %s}, %s);"""
12356+
% (selector, constants.Scroll.Y_OFFSET, scroll_time_ms)
1235712357
)
1235812358
if js_utils.is_jquery_activated(self.driver):
1235912359
self.execute_script(scroll_script)
@@ -14022,8 +14022,8 @@ def has_exception(self):
1402214022

1402314023
def save_teardown_screenshot(self):
1402414024
"""(Should ONLY be used at the start of custom tearDown() methods.)
14025-
This method takes a screenshot of the current web page for a
14026-
FAILING test (or when using "--screenshot" / "--save-screenshot").
14025+
This method takes a screenshot of the active page for FAILING tests
14026+
(or when using "--screenshot" / "--save-screenshot" / "--ss").
1402714027
That way your tearDown() method can navigate away from the last
1402814028
page where the test failed, and still get the correct screenshot
1402914029
before performing tearDown() steps on other pages. If this method
@@ -14040,15 +14040,20 @@ def save_teardown_screenshot(self):
1404014040
if self.recorder_mode:
1404114041
# In case tearDown() leaves the origin, save actions first.
1404214042
self.save_recorded_actions()
14043-
if self.__has_exception() or self.save_screenshot_after_test:
14043+
if (
14044+
self.__has_exception()
14045+
or self.save_screenshot_after_test
14046+
or sys.version_info >= (3, 11)
14047+
):
1404414048
test_logpath = os.path.join(self.log_path, self.__get_test_id())
1404514049
self.__create_log_path_as_needed(test_logpath)
1404614050
self.__set_last_page_screenshot()
1404714051
self.__set_last_page_url()
1404814052
self.__set_last_page_source()
1404914053
sb_config._has_logs = True
14050-
if self.is_pytest:
14051-
self.__add_pytest_html_extra()
14054+
if self.__has_exception() or self.save_screenshot_after_test:
14055+
if self.is_pytest:
14056+
self.__add_pytest_html_extra()
1405214057

1405314058
def _log_fail_data(self):
1405414059
if sys.version_info < (3, 11):

seleniumbase/fixtures/constants.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,11 @@ class Values:
138138
# Demo Mode has slow scrolling to see where you are on the page better.
139139
# However, a regular slow scroll takes too long to cover big distances.
140140
# If the scroll distance is greater than SSMD, a slow scroll speeds up.
141-
SSMD = 900 # Smooth Scroll Minimum Distance (for advanced slow scroll)
141+
SSMD = 500 # Smooth Scroll Minimum Distance (for advanced slow scroll)
142+
143+
144+
class Scroll:
145+
Y_OFFSET = 182
142146

143147

144148
class Warnings:

seleniumbase/fixtures/js_utils.py

Lines changed: 23 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -690,7 +690,7 @@ def activate_messenger(driver):
690690
""" if (typeof Messenger === 'undefined') { return "U"; } """
691691
)
692692
if result == "U":
693-
time.sleep(0.02)
693+
time.sleep(0.022)
694694
continue
695695
else:
696696
break
@@ -1002,7 +1002,7 @@ def get_scroll_distance_to_element(driver, element):
10021002
scroll_position = driver.execute_script("return window.scrollY;")
10031003
element_location = None
10041004
element_location = element.location["y"]
1005-
element_location = element_location - 130
1005+
element_location = element_location - constants.Scroll.Y_OFFSET
10061006
if element_location < 0:
10071007
element_location = 0
10081008
distance = element_location - scroll_position
@@ -1026,7 +1026,7 @@ def scroll_to_element(driver, element):
10261026
screen_width = driver.get_window_size()["width"]
10271027
except Exception:
10281028
element_location_x = 0
1029-
element_location_y = element_location_y - 130
1029+
element_location_y = element_location_y - constants.Scroll.Y_OFFSET
10301030
if element_location_y < 0:
10311031
element_location_y = 0
10321032
element_location_x_fix = element_location_x - 400
@@ -1052,16 +1052,27 @@ def slow_scroll_to_element(driver, element, browser):
10521052
scroll_to_element(driver, element)
10531053
return
10541054
scroll_position = driver.execute_script("return window.scrollY;")
1055-
element_location = None
1055+
element_location_y = None
10561056
try:
1057-
element_location = element.location["y"]
1057+
element_location_y = element.location["y"]
10581058
except Exception:
10591059
element.location_once_scrolled_into_view
10601060
return
1061-
element_location = element_location - 130
1062-
if element_location < 0:
1063-
element_location = 0
1064-
distance = element_location - scroll_position
1061+
try:
1062+
element_location_x = element.location["x"]
1063+
element_width = element.size["width"]
1064+
screen_width = driver.get_window_size()["width"]
1065+
except Exception:
1066+
element_location_x = 0
1067+
element_location_y = element_location_y - constants.Scroll.Y_OFFSET
1068+
if element_location_y < 0:
1069+
element_location_y = 0
1070+
element_location_x_fix = element_location_x - 400
1071+
if element_location_x_fix < 0:
1072+
element_location_x_fix = 0
1073+
if element_location_x + element_width <= screen_width:
1074+
element_location_x_fix = 0
1075+
distance = element_location_y - scroll_position
10651076
if distance != 0:
10661077
total_steps = int(abs(distance) / 50.0) + 2.0
10671078
step_value = float(distance) / total_steps
@@ -1072,7 +1083,9 @@ def slow_scroll_to_element(driver, element, browser):
10721083
scroll_script = "window.scrollTo(0, %s);" % new_position
10731084
driver.execute_script(scroll_script)
10741085
time.sleep(0.01)
1075-
scroll_script = "window.scrollTo(0, %s);" % element_location
1086+
scroll_script = "window.scrollTo(%s, %s);" % (
1087+
element_location_x_fix, element_location_y
1088+
)
10761089
driver.execute_script(scroll_script)
10771090
time.sleep(0.01)
10781091
if distance > 430 or distance < -300:

0 commit comments

Comments
 (0)