seleniumbase 4.26.1__py3-none-any.whl → 4.26.3__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- seleniumbase/__version__.py +1 -1
- seleniumbase/fixtures/base_case.py +64 -1
- seleniumbase/plugins/driver_manager.py +13 -0
- seleniumbase/plugins/sb_manager.py +18 -0
- {seleniumbase-4.26.1.dist-info → seleniumbase-4.26.3.dist-info}/METADATA +1 -1
- {seleniumbase-4.26.1.dist-info → seleniumbase-4.26.3.dist-info}/RECORD +10 -10
- {seleniumbase-4.26.1.dist-info → seleniumbase-4.26.3.dist-info}/LICENSE +0 -0
- {seleniumbase-4.26.1.dist-info → seleniumbase-4.26.3.dist-info}/WHEEL +0 -0
- {seleniumbase-4.26.1.dist-info → seleniumbase-4.26.3.dist-info}/entry_points.txt +0 -0
- {seleniumbase-4.26.1.dist-info → seleniumbase-4.26.3.dist-info}/top_level.txt +0 -0
seleniumbase/__version__.py
CHANGED
@@ -1,2 +1,2 @@
|
|
1
1
|
# seleniumbase package
|
2
|
-
__version__ = "4.26.
|
2
|
+
__version__ = "4.26.3"
|
@@ -60,6 +60,7 @@ from selenium.common.exceptions import (
|
|
60
60
|
from selenium.webdriver.common.by import By
|
61
61
|
from selenium.webdriver.common.keys import Keys
|
62
62
|
from selenium.webdriver.remote.remote_connection import LOGGER
|
63
|
+
from selenium.webdriver.remote.webelement import WebElement
|
63
64
|
from seleniumbase import config as sb_config
|
64
65
|
from seleniumbase.__version__ import __version__
|
65
66
|
from seleniumbase.common import decorators
|
@@ -5645,6 +5646,40 @@ class BaseCase(unittest.TestCase):
|
|
5645
5646
|
if self.is_element_visible(selector, by=by):
|
5646
5647
|
self.__highlight(selector, by=by, loops=loops, scroll=scroll)
|
5647
5648
|
|
5649
|
+
def __highlight_element(self, element, loops=None, scroll=True):
|
5650
|
+
self.__check_scope()
|
5651
|
+
if not loops:
|
5652
|
+
loops = settings.HIGHLIGHTS
|
5653
|
+
if scroll and self.browser != "safari":
|
5654
|
+
try:
|
5655
|
+
self.__slow_scroll_to_element(element)
|
5656
|
+
except Exception:
|
5657
|
+
pass
|
5658
|
+
if self.highlights:
|
5659
|
+
loops = self.highlights
|
5660
|
+
if self.browser == "ie":
|
5661
|
+
loops = 1 # Override previous setting because IE is slow
|
5662
|
+
loops = int(loops)
|
5663
|
+
if self.headless or self.headless2 or self.xvfb:
|
5664
|
+
# Headless modes have less need for highlighting elements.
|
5665
|
+
# However, highlight() may be used as a sleep alternative.
|
5666
|
+
loops = int(math.ceil(loops * 0.5))
|
5667
|
+
o_bs = "" # original_box_shadow
|
5668
|
+
try:
|
5669
|
+
style = element.get_attribute("style")
|
5670
|
+
except Exception:
|
5671
|
+
self.wait_for_ready_state_complete()
|
5672
|
+
time.sleep(0.12)
|
5673
|
+
style = element.get_attribute("style")
|
5674
|
+
if style:
|
5675
|
+
if "box-shadow: " in style:
|
5676
|
+
box_start = style.find("box-shadow: ")
|
5677
|
+
box_end = style.find(";", box_start) + 1
|
5678
|
+
original_box_shadow = style[box_start:box_end]
|
5679
|
+
o_bs = original_box_shadow
|
5680
|
+
self.__highlight_element_with_js(element, loops, o_bs)
|
5681
|
+
time.sleep(0.065)
|
5682
|
+
|
5648
5683
|
def __highlight(
|
5649
5684
|
self, selector, by="css selector", loops=None, scroll=True
|
5650
5685
|
):
|
@@ -5733,13 +5768,16 @@ class BaseCase(unittest.TestCase):
|
|
5733
5768
|
):
|
5734
5769
|
"""This method uses fancy JavaScript to highlight an element.
|
5735
5770
|
@Params
|
5736
|
-
selector - the selector of the element to find
|
5771
|
+
selector - the selector of the element to find (Accepts WebElement)
|
5737
5772
|
by - the type of selector to search by (Default: CSS)
|
5738
5773
|
loops - # of times to repeat the highlight animation
|
5739
5774
|
(Default: 4. Each loop lasts for about 0.2s)
|
5740
5775
|
scroll - the option to scroll to the element first (Default: True)
|
5741
5776
|
timeout - the time to wait for the element to appear """
|
5742
5777
|
self.__check_scope()
|
5778
|
+
if isinstance(selector, WebElement):
|
5779
|
+
self.__highlight_element(selector, loops=loops, scroll=scroll)
|
5780
|
+
return
|
5743
5781
|
if not timeout:
|
5744
5782
|
timeout = settings.SMALL_TIMEOUT
|
5745
5783
|
self.wait_for_element_visible(selector, by=by, timeout=timeout)
|
@@ -5751,6 +5789,31 @@ class BaseCase(unittest.TestCase):
|
|
5751
5789
|
action = ["hi_li", selector, origin, time_stamp]
|
5752
5790
|
self.__extra_actions.append(action)
|
5753
5791
|
|
5792
|
+
def highlight_elements(
|
5793
|
+
self,
|
5794
|
+
selector,
|
5795
|
+
by="css selector",
|
5796
|
+
loops=None,
|
5797
|
+
scroll=True,
|
5798
|
+
limit=0,
|
5799
|
+
):
|
5800
|
+
if not limit:
|
5801
|
+
limit = 0 # 0 means no limit
|
5802
|
+
limit = int(limit)
|
5803
|
+
count = 0
|
5804
|
+
elements = self.find_elements(selector, by=by)
|
5805
|
+
for element in elements:
|
5806
|
+
try:
|
5807
|
+
if element.is_displayed():
|
5808
|
+
self.__highlight_element(
|
5809
|
+
element, loops=loops, scroll=scroll
|
5810
|
+
)
|
5811
|
+
count += 1
|
5812
|
+
except Exception:
|
5813
|
+
pass
|
5814
|
+
if limit > 0 and count >= limit:
|
5815
|
+
break
|
5816
|
+
|
5754
5817
|
def press_up_arrow(self, selector="html", times=1, by="css selector"):
|
5755
5818
|
"""Simulates pressing the UP Arrow on the keyboard.
|
5756
5819
|
By default, "html" will be used as the CSS Selector target.
|
@@ -328,6 +328,12 @@ def Driver(
|
|
328
328
|
):
|
329
329
|
recorder_mode = True
|
330
330
|
recorder_ext = True
|
331
|
+
if headed is None:
|
332
|
+
# Override the default headless mode on Linux if set.
|
333
|
+
if "--gui" in sys_argv or "--headed" in sys_argv:
|
334
|
+
headed = True
|
335
|
+
else:
|
336
|
+
headed = False
|
331
337
|
if (
|
332
338
|
shared_utils.is_linux()
|
333
339
|
and not headed
|
@@ -434,6 +440,13 @@ def Driver(
|
|
434
440
|
disable_js = False
|
435
441
|
if pls is not None and page_load_strategy is None:
|
436
442
|
page_load_strategy = pls
|
443
|
+
if not page_load_strategy and "--pls=" in arg_join:
|
444
|
+
if "--pls=none" in sys_argv or '--pls="none"' in sys_argv:
|
445
|
+
page_load_strategy = "none"
|
446
|
+
elif "--pls=eager" in sys_argv or '--pls="eager"' in sys_argv:
|
447
|
+
page_load_strategy = "eager"
|
448
|
+
elif "--pls=normal" in sys_argv or '--pls="normal"' in sys_argv:
|
449
|
+
page_load_strategy = "normal"
|
437
450
|
if page_load_strategy is not None:
|
438
451
|
if page_load_strategy.lower() not in ["normal", "eager", "none"]:
|
439
452
|
raise Exception(
|
@@ -378,9 +378,20 @@ def SB(
|
|
378
378
|
record_sleep = True
|
379
379
|
else:
|
380
380
|
record_sleep = False
|
381
|
+
if xvfb is None:
|
382
|
+
if "--xvfb" in sys_argv:
|
383
|
+
xvfb = True
|
384
|
+
else:
|
385
|
+
xvfb = False
|
381
386
|
if not shared_utils.is_linux():
|
382
387
|
# The Xvfb virtual display server is for Linux OS Only!
|
383
388
|
xvfb = False
|
389
|
+
if headed is None:
|
390
|
+
# Override the default headless mode on Linux if set.
|
391
|
+
if "--gui" in sys_argv or "--headed" in sys_argv:
|
392
|
+
headed = True
|
393
|
+
else:
|
394
|
+
headed = False
|
384
395
|
if (
|
385
396
|
shared_utils.is_linux()
|
386
397
|
and not headed
|
@@ -532,6 +543,13 @@ def SB(
|
|
532
543
|
_disable_beforeunload = True
|
533
544
|
if pls is not None and page_load_strategy is None:
|
534
545
|
page_load_strategy = pls
|
546
|
+
if not page_load_strategy and "--pls=" in arg_join:
|
547
|
+
if "--pls=none" in sys_argv or '--pls="none"' in sys_argv:
|
548
|
+
page_load_strategy = "none"
|
549
|
+
elif "--pls=eager" in sys_argv or '--pls="eager"' in sys_argv:
|
550
|
+
page_load_strategy = "eager"
|
551
|
+
elif "--pls=normal" in sys_argv or '--pls="normal"' in sys_argv:
|
552
|
+
page_load_strategy = "normal"
|
535
553
|
if page_load_strategy is not None:
|
536
554
|
if page_load_strategy.lower() not in ["normal", "eager", "none"]:
|
537
555
|
raise Exception(
|
@@ -5,7 +5,7 @@ sbase/steps.py,sha256=bKT_u5bJkKzYWEuAXi9NVVRYYxQRCM1_YJUrNFFRVPY,42865
|
|
5
5
|
seleniumbase/ReadMe.md,sha256=4nEdto4d0Ch0Zneg0yAC-RBBdqRqPUP0SCo-ze_XDPM,3612
|
6
6
|
seleniumbase/__init__.py,sha256=Mw4ShIWUF2Efjx-JuwUQLWF9nIbxcX-vu9AOGBp32ec,2123
|
7
7
|
seleniumbase/__main__.py,sha256=dn1p6dgCchmcH1zzTzzQvFwwdQQqnTGH6ULV9m4hv24,654
|
8
|
-
seleniumbase/__version__.py,sha256
|
8
|
+
seleniumbase/__version__.py,sha256=FFWk8j6zhXWDYdLew6Aj1jcg3AsMK8J44UaJpDRfpws,46
|
9
9
|
seleniumbase/behave/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
10
10
|
seleniumbase/behave/behave_helper.py,sha256=elkl8P9eLulRAioLstE9baYNM9N_PHBmAOcajX-pH_Y,24198
|
11
11
|
seleniumbase/behave/behave_sb.py,sha256=rpSKGufjzKeoiTqsr1HChNu1fY68CMirr5mgff--LHs,56291
|
@@ -70,7 +70,7 @@ seleniumbase/extensions/disable_csp.zip,sha256=YMifIIgEBiLrEFrS1sfW4Exh4br1V4oK1
|
|
70
70
|
seleniumbase/extensions/recorder.zip,sha256=dE3-vt1lsIyMbz3MD0WboizA5KiR3SH2jxAMrC0T_cU,11908
|
71
71
|
seleniumbase/extensions/sbase_ext.zip,sha256=3s1N8zrVaMz8RQEOIoBzC3KDjtmHwVZRvVsX25Odr_s,8175
|
72
72
|
seleniumbase/fixtures/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
73
|
-
seleniumbase/fixtures/base_case.py,sha256=
|
73
|
+
seleniumbase/fixtures/base_case.py,sha256=IOSN4C10oS-xv_euTU99mZ3vunySXwx9Sr5tShAn2B0,691243
|
74
74
|
seleniumbase/fixtures/constants.py,sha256=Uvr5-Z8ZfiE2-lIqJS1CQ0tkmQ6qJYooCOTo_HMleo4,13348
|
75
75
|
seleniumbase/fixtures/css_to_xpath.py,sha256=9ouDB1xl4MJ2os6JOgTIAyHKOQfuxtxvXC3O5hSnEKA,1954
|
76
76
|
seleniumbase/fixtures/errors.py,sha256=KyxuEVx_e3MPhVrJfNIa_3ltMpbCFxfy_jxK8RFNTns,555
|
@@ -92,11 +92,11 @@ seleniumbase/plugins/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hS
|
|
92
92
|
seleniumbase/plugins/base_plugin.py,sha256=o_-IraDNgsMEJQv1HsmS5ZcTvYOXiQ4NpxryG2m9c2A,14970
|
93
93
|
seleniumbase/plugins/basic_test_info.py,sha256=8ov6n417gPbqqvrlT4zrch7l2XcRt-GF2ny6rR9AMWk,2108
|
94
94
|
seleniumbase/plugins/db_reporting_plugin.py,sha256=En09qUCoojrk9-vbcnsoHdSELoGmag2GDIyu3jTiJas,7331
|
95
|
-
seleniumbase/plugins/driver_manager.py,sha256=
|
95
|
+
seleniumbase/plugins/driver_manager.py,sha256=oO3ML-tVqf8v6EGvylTCtPi5PjdfnSH40m7icjJfZDM,22485
|
96
96
|
seleniumbase/plugins/page_source.py,sha256=loTnXxOj4kxEukuTZEiGyvKBhY3KDVDMnNlHHheTBDE,1889
|
97
97
|
seleniumbase/plugins/pytest_plugin.py,sha256=fPOADQgwLKQ-BxDZm3sAp8jrN2FTjQo8_suIXXRvZqM,94467
|
98
98
|
seleniumbase/plugins/s3_logging_plugin.py,sha256=WDfertQgGOW_SRJpFMaekYD6vBVW9VO62POtXXy2HCM,2319
|
99
|
-
seleniumbase/plugins/sb_manager.py,sha256=
|
99
|
+
seleniumbase/plugins/sb_manager.py,sha256=LPhV75mvhFRtSE18J1r8aPtAwaJO9UOLNxNdKM_qW1I,40491
|
100
100
|
seleniumbase/plugins/screen_shots.py,sha256=1hrXw-hzuZ1BR6Yh7AyWX2ABnvnP73-RCbwdz958gj4,1127
|
101
101
|
seleniumbase/plugins/selenium_plugin.py,sha256=wErmsKOzBFd9lDX9VVmxPauSpdjBDWScDk74QsCzJOY,54493
|
102
102
|
seleniumbase/resources/ReadMe.md,sha256=uminnO5_Uv-UZDKcc9a9s9kxisaYUps-H98Fp5PJcaU,2124
|
@@ -137,9 +137,9 @@ seleniumbase/utilities/selenium_grid/start-grid-hub.sh,sha256=KADv0RUHONLL2_I443
|
|
137
137
|
seleniumbase/utilities/selenium_ide/ReadMe.md,sha256=hznGeuMpkIimqMiZBW-4goIy2ltW4l8X9kb0YSPUQfE,4483
|
138
138
|
seleniumbase/utilities/selenium_ide/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
139
139
|
seleniumbase/utilities/selenium_ide/convert_ide.py,sha256=pZFnqEJQEKZPyNFjkLD29s2HPQgCrWW9XJWpCPhWOoM,31691
|
140
|
-
seleniumbase-4.26.
|
141
|
-
seleniumbase-4.26.
|
142
|
-
seleniumbase-4.26.
|
143
|
-
seleniumbase-4.26.
|
144
|
-
seleniumbase-4.26.
|
145
|
-
seleniumbase-4.26.
|
140
|
+
seleniumbase-4.26.3.dist-info/LICENSE,sha256=odSYtWibXBnQ1gBg6CnDZ82n8kLF_if5-2nbqnEyD8k,1085
|
141
|
+
seleniumbase-4.26.3.dist-info/METADATA,sha256=IBs2oYYeZBIZKe_U9KREMujzQhZUCmQdzpiGfPtZI74,84898
|
142
|
+
seleniumbase-4.26.3.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
|
143
|
+
seleniumbase-4.26.3.dist-info/entry_points.txt,sha256=CNrh2EKNaHYEhO6pP1RJyVLB99LkDDYX7TnUK8xfjqk,623
|
144
|
+
seleniumbase-4.26.3.dist-info/top_level.txt,sha256=4N97aBOQ8ETCnDnokBsWb07lJfTaq3C1ZzYRxvLMxqU,19
|
145
|
+
seleniumbase-4.26.3.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|