seleniumbase 4.28.4__py3-none-any.whl → 4.28.5__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/core/browser_launcher.py +196 -38
- seleniumbase/fixtures/base_case.py +4 -0
- {seleniumbase-4.28.4.dist-info → seleniumbase-4.28.5.dist-info}/METADATA +6 -6
- {seleniumbase-4.28.4.dist-info → seleniumbase-4.28.5.dist-info}/RECORD +9 -9
- {seleniumbase-4.28.4.dist-info → seleniumbase-4.28.5.dist-info}/LICENSE +0 -0
- {seleniumbase-4.28.4.dist-info → seleniumbase-4.28.5.dist-info}/WHEEL +0 -0
- {seleniumbase-4.28.4.dist-info → seleniumbase-4.28.5.dist-info}/entry_points.txt +0 -0
- {seleniumbase-4.28.4.dist-info → seleniumbase-4.28.5.dist-info}/top_level.txt +0 -0
seleniumbase/__version__.py
CHANGED
@@ -1,2 +1,2 @@
|
|
1
1
|
# seleniumbase package
|
2
|
-
__version__ = "4.28.
|
2
|
+
__version__ = "4.28.5"
|
@@ -660,7 +660,7 @@ def get_gui_element_position(driver, selector):
|
|
660
660
|
return (viewport_x, viewport_y)
|
661
661
|
|
662
662
|
|
663
|
-
def
|
663
|
+
def _uc_gui_click_x_y(driver, x, y, timeframe=0.25, uc_lock=False):
|
664
664
|
install_pyautogui_if_missing(driver)
|
665
665
|
import pyautogui
|
666
666
|
pyautogui = get_configured_pyautogui(pyautogui)
|
@@ -678,7 +678,7 @@ def uc_gui_click_x_y(driver, x, y, timeframe=0.25, uc_lock=True):
|
|
678
678
|
with gui_lock: # Prevent issues with multiple processes
|
679
679
|
pyautogui.moveTo(x, y, timeframe, pyautogui.easeOutQuad)
|
680
680
|
if timeframe >= 0.25:
|
681
|
-
time.sleep(0.
|
681
|
+
time.sleep(0.056) # Wait if moving at human-speed
|
682
682
|
if "--debug" in sys.argv:
|
683
683
|
print(" <DEBUG> pyautogui.click(%s, %s)" % (x, y))
|
684
684
|
pyautogui.click(x=x, y=y)
|
@@ -686,30 +686,71 @@ def uc_gui_click_x_y(driver, x, y, timeframe=0.25, uc_lock=True):
|
|
686
686
|
# Called from a method where the gui_lock is already active
|
687
687
|
pyautogui.moveTo(x, y, timeframe, pyautogui.easeOutQuad)
|
688
688
|
if timeframe >= 0.25:
|
689
|
-
time.sleep(0.
|
689
|
+
time.sleep(0.056) # Wait if moving at human-speed
|
690
690
|
if "--debug" in sys.argv:
|
691
691
|
print(" <DEBUG> pyautogui.click(%s, %s)" % (x, y))
|
692
692
|
pyautogui.click(x=x, y=y)
|
693
693
|
|
694
694
|
|
695
|
-
def
|
695
|
+
def uc_gui_click_x_y(driver, x, y, timeframe=0.25):
|
696
|
+
_uc_gui_click_x_y(driver, x, y, timeframe=timeframe, uc_lock=True)
|
697
|
+
|
698
|
+
|
699
|
+
def _on_a_cf_turnstile_page(driver):
|
696
700
|
source = driver.get_page_source()
|
697
701
|
if (
|
698
|
-
"
|
699
|
-
or
|
702
|
+
'data-callback="onCaptchaSuccess"' in source
|
703
|
+
or "cf-turnstile-wrapper" in source
|
700
704
|
):
|
701
705
|
return True
|
702
706
|
return False
|
703
707
|
|
704
708
|
|
705
|
-
def
|
706
|
-
|
707
|
-
|
709
|
+
def _on_a_g_recaptcha_page(driver):
|
710
|
+
source = driver.get_page_source()
|
711
|
+
if (
|
712
|
+
'id="recaptcha-token"' in source
|
713
|
+
or 'title="reCAPTCHA"' in source
|
714
|
+
):
|
715
|
+
return True
|
716
|
+
return False
|
717
|
+
|
718
|
+
|
719
|
+
def _uc_gui_click_captcha(
|
720
|
+
driver,
|
721
|
+
frame="iframe",
|
722
|
+
retry=False,
|
723
|
+
blind=False,
|
724
|
+
ctype=None,
|
725
|
+
):
|
726
|
+
_on_a_captcha_page = None
|
727
|
+
if ctype == "cf_t":
|
728
|
+
if not _on_a_cf_turnstile_page(driver):
|
729
|
+
return
|
730
|
+
else:
|
731
|
+
_on_a_captcha_page = _on_a_cf_turnstile_page
|
732
|
+
elif ctype == "g_rc":
|
733
|
+
if not _on_a_g_recaptcha_page(driver):
|
734
|
+
return
|
735
|
+
else:
|
736
|
+
_on_a_captcha_page = _on_a_g_recaptcha_page
|
737
|
+
else:
|
738
|
+
if _on_a_g_recaptcha_page(driver):
|
739
|
+
ctype = "g_rc"
|
740
|
+
_on_a_captcha_page = _on_a_g_recaptcha_page
|
741
|
+
elif _on_a_cf_turnstile_page(driver):
|
742
|
+
ctype = "cf_t"
|
743
|
+
_on_a_captcha_page = _on_a_cf_turnstile_page
|
744
|
+
else:
|
745
|
+
return
|
708
746
|
install_pyautogui_if_missing(driver)
|
709
747
|
import pyautogui
|
710
748
|
pyautogui = get_configured_pyautogui(pyautogui)
|
749
|
+
i_x = None
|
750
|
+
i_y = None
|
711
751
|
x = None
|
712
752
|
y = None
|
753
|
+
visible_iframe = True
|
713
754
|
gui_lock = fasteners.InterProcessLock(
|
714
755
|
constants.MultiBrowser.PYAUTOGUILOCK
|
715
756
|
)
|
@@ -725,22 +766,54 @@ def uc_gui_click_cf(driver, frame="iframe", retry=False, blind=False):
|
|
725
766
|
page_actions.switch_to_window(
|
726
767
|
driver, driver.current_window_handle, 2, uc_lock=False
|
727
768
|
)
|
769
|
+
if ctype == "cf_t":
|
770
|
+
if (
|
771
|
+
driver.is_element_present(".cf-turnstile-wrapper iframe")
|
772
|
+
or driver.is_element_present(
|
773
|
+
'[data-callback="onCaptchaSuccess"] iframe'
|
774
|
+
)
|
775
|
+
):
|
776
|
+
pass
|
777
|
+
else:
|
778
|
+
visible_iframe = False
|
779
|
+
if driver.is_element_present(".cf-turnstile-wrapper"):
|
780
|
+
frame = ".cf-turnstile-wrapper"
|
781
|
+
elif driver.is_element_present(
|
782
|
+
'[data-callback="onCaptchaSuccess"]'
|
783
|
+
):
|
784
|
+
frame = '[data-callback="onCaptchaSuccess"]'
|
785
|
+
else:
|
786
|
+
return
|
728
787
|
if not is_in_frame or needs_switch:
|
729
788
|
# Currently not in frame (or nested frame outside CF one)
|
730
789
|
try:
|
731
|
-
i_x, i_y = get_gui_element_position(driver,
|
732
|
-
|
790
|
+
i_x, i_y = get_gui_element_position(driver, frame)
|
791
|
+
if visible_iframe:
|
792
|
+
driver.switch_to_frame(frame)
|
733
793
|
except Exception:
|
734
|
-
if
|
735
|
-
|
736
|
-
|
737
|
-
|
738
|
-
|
794
|
+
if visible_iframe:
|
795
|
+
if driver.is_element_present("iframe"):
|
796
|
+
i_x, i_y = get_gui_element_position(driver, "iframe")
|
797
|
+
driver.switch_to_frame("iframe")
|
798
|
+
else:
|
799
|
+
return
|
800
|
+
if not i_x or not i_y:
|
801
|
+
return
|
739
802
|
try:
|
740
|
-
|
741
|
-
|
742
|
-
|
743
|
-
|
803
|
+
if visible_iframe:
|
804
|
+
selector = "span"
|
805
|
+
if ctype == "g_rc":
|
806
|
+
selector = "span.recaptcha-checkbox"
|
807
|
+
element = driver.wait_for_element_present(
|
808
|
+
selector, timeout=2.5
|
809
|
+
)
|
810
|
+
x = i_x + element.rect["x"] + int(element.rect["width"] / 2)
|
811
|
+
x += 1
|
812
|
+
y = i_y + element.rect["y"] + int(element.rect["height"] / 2)
|
813
|
+
y += 1
|
814
|
+
else:
|
815
|
+
x = i_x + 34
|
816
|
+
y = i_y + 34
|
744
817
|
driver.switch_to.default_content()
|
745
818
|
except Exception:
|
746
819
|
try:
|
@@ -751,46 +824,91 @@ def uc_gui_click_cf(driver, frame="iframe", retry=False, blind=False):
|
|
751
824
|
try:
|
752
825
|
if x and y:
|
753
826
|
sb_config._saved_cf_x_y = (x, y)
|
754
|
-
|
827
|
+
_uc_gui_click_x_y(driver, x, y, timeframe=0.95)
|
755
828
|
except Exception:
|
756
829
|
pass
|
757
830
|
reconnect_time = (float(constants.UC.RECONNECT_TIME) / 2.0) + 0.5
|
758
831
|
if IS_LINUX:
|
759
|
-
reconnect_time = constants.UC.RECONNECT_TIME
|
832
|
+
reconnect_time = constants.UC.RECONNECT_TIME + 0.15
|
760
833
|
if not x or not y:
|
761
834
|
reconnect_time = 1 # Make it quick (it already failed)
|
762
835
|
driver.reconnect(reconnect_time)
|
763
836
|
if blind:
|
764
837
|
retry = True
|
765
|
-
if retry and x and y and
|
838
|
+
if retry and x and y and _on_a_captcha_page(driver):
|
766
839
|
with gui_lock: # Prevent issues with multiple processes
|
767
840
|
# Make sure the window is on top
|
768
841
|
page_actions.switch_to_window(
|
769
842
|
driver, driver.current_window_handle, 2, uc_lock=False
|
770
843
|
)
|
771
|
-
driver.
|
772
|
-
if driver.is_element_visible("#success-icon"):
|
773
|
-
driver.switch_to.parent_frame()
|
844
|
+
if not driver.is_element_present("iframe"):
|
774
845
|
return
|
846
|
+
else:
|
847
|
+
try:
|
848
|
+
driver.switch_to_frame(frame)
|
849
|
+
except Exception:
|
850
|
+
try:
|
851
|
+
driver.switch_to_frame("iframe")
|
852
|
+
except Exception:
|
853
|
+
return
|
854
|
+
checkbox_success = None
|
855
|
+
if ctype == "cf_t":
|
856
|
+
checkbox_success = "#success-icon"
|
857
|
+
elif ctype == "g_rc":
|
858
|
+
checkbox_success = "span.recaptcha-checkbox-checked"
|
859
|
+
else:
|
860
|
+
return # If this line is reached, ctype wasn't set
|
861
|
+
if driver.is_element_visible("#success-icon"):
|
862
|
+
driver.switch_to.parent_frame(checkbox_success)
|
863
|
+
return
|
775
864
|
if blind:
|
776
865
|
driver.uc_open_with_disconnect(driver.current_url, 3.8)
|
777
|
-
|
866
|
+
_uc_gui_click_x_y(driver, x, y, timeframe=1.05)
|
778
867
|
else:
|
779
868
|
driver.uc_open_with_reconnect(driver.current_url, 3.8)
|
780
|
-
if
|
869
|
+
if _on_a_captcha_page(driver):
|
781
870
|
driver.disconnect()
|
782
|
-
|
783
|
-
driver, x, y, timeframe=1.05, uc_lock=False
|
784
|
-
)
|
871
|
+
_uc_gui_click_x_y(driver, x, y, timeframe=1.05)
|
785
872
|
driver.reconnect(reconnect_time)
|
786
873
|
|
787
874
|
|
875
|
+
def uc_gui_click_captcha(driver, frame="iframe", retry=False, blind=False):
|
876
|
+
_uc_gui_click_captcha(
|
877
|
+
driver,
|
878
|
+
frame=frame,
|
879
|
+
retry=retry,
|
880
|
+
blind=blind,
|
881
|
+
ctype=None,
|
882
|
+
)
|
883
|
+
|
884
|
+
|
885
|
+
def uc_gui_click_rc(driver, frame="iframe", retry=False, blind=False):
|
886
|
+
_uc_gui_click_captcha(
|
887
|
+
driver,
|
888
|
+
frame=frame,
|
889
|
+
retry=retry,
|
890
|
+
blind=blind,
|
891
|
+
ctype="g_rc",
|
892
|
+
)
|
893
|
+
|
894
|
+
|
895
|
+
def uc_gui_click_cf(driver, frame="iframe", retry=False, blind=False):
|
896
|
+
_uc_gui_click_captcha(
|
897
|
+
driver,
|
898
|
+
frame=frame,
|
899
|
+
retry=retry,
|
900
|
+
blind=blind,
|
901
|
+
ctype="cf_t",
|
902
|
+
)
|
903
|
+
|
904
|
+
|
788
905
|
def uc_gui_handle_cf(driver, frame="iframe"):
|
789
|
-
if not
|
906
|
+
if not _on_a_cf_turnstile_page(driver):
|
790
907
|
return
|
791
908
|
install_pyautogui_if_missing(driver)
|
792
909
|
import pyautogui
|
793
910
|
pyautogui = get_configured_pyautogui(pyautogui)
|
911
|
+
visible_iframe = True
|
794
912
|
gui_lock = fasteners.InterProcessLock(
|
795
913
|
constants.MultiBrowser.PYAUTOGUILOCK
|
796
914
|
)
|
@@ -806,16 +924,46 @@ def uc_gui_handle_cf(driver, frame="iframe"):
|
|
806
924
|
page_actions.switch_to_window(
|
807
925
|
driver, driver.current_window_handle, 2, uc_lock=False
|
808
926
|
)
|
927
|
+
if (
|
928
|
+
driver.is_element_present(".cf-turnstile-wrapper iframe")
|
929
|
+
or driver.is_element_present(
|
930
|
+
'[data-callback="onCaptchaSuccess"] iframe'
|
931
|
+
)
|
932
|
+
):
|
933
|
+
pass
|
934
|
+
else:
|
935
|
+
visible_iframe = False
|
936
|
+
if driver.is_element_present(".cf-turnstile-wrapper"):
|
937
|
+
frame = ".cf-turnstile-wrapper"
|
938
|
+
elif driver.is_element_present(
|
939
|
+
'[data-callback="onCaptchaSuccess"]'
|
940
|
+
):
|
941
|
+
frame = '[data-callback="onCaptchaSuccess"]'
|
942
|
+
else:
|
943
|
+
return
|
809
944
|
if not is_in_frame or needs_switch:
|
810
945
|
# Currently not in frame (or nested frame outside CF one)
|
811
946
|
try:
|
812
|
-
|
947
|
+
if visible_iframe:
|
948
|
+
driver.switch_to_frame(frame)
|
813
949
|
except Exception:
|
814
|
-
if
|
815
|
-
driver.
|
816
|
-
|
817
|
-
|
950
|
+
if visible_iframe:
|
951
|
+
if driver.is_element_present("iframe"):
|
952
|
+
driver.switch_to_frame("iframe")
|
953
|
+
else:
|
954
|
+
return
|
818
955
|
try:
|
956
|
+
found_checkbox = False
|
957
|
+
for i in range(10):
|
958
|
+
pyautogui.press("\t")
|
959
|
+
time.sleep(0.02)
|
960
|
+
active_element_css = js_utils.get_active_element_css(driver)
|
961
|
+
if active_element_css == "div.cf-turnstile-wrapper":
|
962
|
+
found_checkbox = True
|
963
|
+
break
|
964
|
+
time.sleep(0.02)
|
965
|
+
if not found_checkbox:
|
966
|
+
return
|
819
967
|
driver.execute_script('document.querySelector("input").focus()')
|
820
968
|
except Exception:
|
821
969
|
try:
|
@@ -829,7 +977,7 @@ def uc_gui_handle_cf(driver, frame="iframe"):
|
|
829
977
|
pass
|
830
978
|
reconnect_time = (float(constants.UC.RECONNECT_TIME) / 2.0) + 0.5
|
831
979
|
if IS_LINUX:
|
832
|
-
reconnect_time = constants.UC.RECONNECT_TIME
|
980
|
+
reconnect_time = constants.UC.RECONNECT_TIME + 0.15
|
833
981
|
driver.reconnect(reconnect_time)
|
834
982
|
|
835
983
|
|
@@ -4166,6 +4314,16 @@ def get_local_driver(
|
|
4166
4314
|
driver, *args, **kwargs
|
4167
4315
|
)
|
4168
4316
|
)
|
4317
|
+
driver.uc_gui_click_captcha = (
|
4318
|
+
lambda *args, **kwargs: uc_gui_click_captcha(
|
4319
|
+
driver, *args, **kwargs
|
4320
|
+
)
|
4321
|
+
)
|
4322
|
+
driver.uc_gui_click_rc = (
|
4323
|
+
lambda *args, **kwargs: uc_gui_click_rc(
|
4324
|
+
driver, *args, **kwargs
|
4325
|
+
)
|
4326
|
+
)
|
4169
4327
|
driver.uc_gui_click_cf = (
|
4170
4328
|
lambda *args, **kwargs: uc_gui_click_cf(
|
4171
4329
|
driver, *args, **kwargs
|
@@ -4242,6 +4242,10 @@ class BaseCase(unittest.TestCase):
|
|
4242
4242
|
self.uc_gui_write = new_driver.uc_gui_write
|
4243
4243
|
if hasattr(new_driver, "uc_gui_click_x_y"):
|
4244
4244
|
self.uc_gui_click_x_y = new_driver.uc_gui_click_x_y
|
4245
|
+
if hasattr(new_driver, "uc_gui_click_captcha"):
|
4246
|
+
self.uc_gui_click_captcha = new_driver.uc_gui_click_captcha
|
4247
|
+
if hasattr(new_driver, "uc_gui_click_rc"):
|
4248
|
+
self.uc_gui_click_rc = new_driver.uc_gui_click_rc
|
4245
4249
|
if hasattr(new_driver, "uc_gui_click_cf"):
|
4246
4250
|
self.uc_gui_click_cf = new_driver.uc_gui_click_cf
|
4247
4251
|
if hasattr(new_driver, "uc_gui_handle_cf"):
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: seleniumbase
|
3
|
-
Version: 4.28.
|
3
|
+
Version: 4.28.5
|
4
4
|
Summary: A complete web automation framework for end-to-end testing.
|
5
5
|
Home-page: https://github.com/seleniumbase/SeleniumBase
|
6
6
|
Author: Michael Mintz
|
@@ -94,7 +94,7 @@ Requires-Dist: mdurl ==0.1.2
|
|
94
94
|
Requires-Dist: rich ==13.7.1
|
95
95
|
Requires-Dist: python-xlib ==0.33 ; platform_system == "Linux"
|
96
96
|
Requires-Dist: pyreadline3 ==3.4.1 ; platform_system == "Windows"
|
97
|
-
Requires-Dist: urllib3 <2,>=1.26.
|
97
|
+
Requires-Dist: urllib3 <2,>=1.26.19 ; python_version < "3.10"
|
98
98
|
Requires-Dist: pip >=24.0 ; python_version < "3.8"
|
99
99
|
Requires-Dist: packaging >=24.0 ; python_version < "3.8"
|
100
100
|
Requires-Dist: setuptools >=68.0.0 ; python_version < "3.8"
|
@@ -112,8 +112,8 @@ Requires-Dist: pytest-xdist ==3.5.0 ; python_version < "3.8"
|
|
112
112
|
Requires-Dist: soupsieve ==2.4.1 ; python_version < "3.8"
|
113
113
|
Requires-Dist: pygments ==2.17.2 ; python_version < "3.8"
|
114
114
|
Requires-Dist: markdown-it-py ==2.2.0 ; python_version < "3.8"
|
115
|
-
Requires-Dist: urllib3 <2.3.0,>=1.26.
|
116
|
-
Requires-Dist: pip >=24.1.
|
115
|
+
Requires-Dist: urllib3 <2.3.0,>=1.26.19 ; python_version >= "3.10"
|
116
|
+
Requires-Dist: pip >=24.1.2 ; python_version >= "3.8"
|
117
117
|
Requires-Dist: packaging >=24.1 ; python_version >= "3.8"
|
118
118
|
Requires-Dist: setuptools >=70.2.0 ; python_version >= "3.8"
|
119
119
|
Requires-Dist: wheel >=0.43.0 ; python_version >= "3.8"
|
@@ -157,7 +157,7 @@ Requires-Dist: pycparser ==2.22 ; extra == 'pdfminer'
|
|
157
157
|
Requires-Dist: pdfminer.six ==20221105 ; (python_version < "3.8") and extra == 'pdfminer'
|
158
158
|
Requires-Dist: cffi ==1.15.1 ; (python_version < "3.8") and extra == 'pdfminer'
|
159
159
|
Requires-Dist: cryptography ==39.0.2 ; (python_version < "3.9") and extra == 'pdfminer'
|
160
|
-
Requires-Dist: pdfminer.six ==
|
160
|
+
Requires-Dist: pdfminer.six ==20240706 ; (python_version >= "3.8") and extra == 'pdfminer'
|
161
161
|
Requires-Dist: cffi ==1.16.0 ; (python_version >= "3.8") and extra == 'pdfminer'
|
162
162
|
Requires-Dist: cryptography ==42.0.8 ; (python_version >= "3.9") and extra == 'pdfminer'
|
163
163
|
Provides-Extra: pillow
|
@@ -168,7 +168,7 @@ Requires-Dist: pip-system-certs ==4.0 ; (platform_system == "Windows") and extra
|
|
168
168
|
Provides-Extra: proxy
|
169
169
|
Requires-Dist: proxy.py ==2.4.3 ; extra == 'proxy'
|
170
170
|
Provides-Extra: psutil
|
171
|
-
Requires-Dist: psutil ==
|
171
|
+
Requires-Dist: psutil ==6.0.0 ; extra == 'psutil'
|
172
172
|
Provides-Extra: pyautogui
|
173
173
|
Requires-Dist: PyAutoGUI ==0.9.54 ; extra == 'pyautogui'
|
174
174
|
Provides-Extra: selenium-stealth
|
@@ -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=dgq30q6wGO2fJOVYemxC5hLxzv-of-MRn5P1YarBq5k,2263
|
7
7
|
seleniumbase/__main__.py,sha256=dn1p6dgCchmcH1zzTzzQvFwwdQQqnTGH6ULV9m4hv24,654
|
8
|
-
seleniumbase/__version__.py,sha256=
|
8
|
+
seleniumbase/__version__.py,sha256=fi9wVefZcn8xh6-DIKJewbq8lsrNyHHdHJOlTqp3mcE,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=q4uYZixZBf7VYWnQnEk2weTcyMy1X1faR3vyYvUzDiA,56406
|
@@ -40,7 +40,7 @@ seleniumbase/console_scripts/sb_print.py,sha256=yo641b_OdSE0GUauOyxk-QrNeIjYzbRY
|
|
40
40
|
seleniumbase/console_scripts/sb_recorder.py,sha256=UQQhnAR18dbcC7ToDvj6TM2PIG5qBrNaekaM6kSK_E8,10970
|
41
41
|
seleniumbase/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
42
42
|
seleniumbase/core/application_manager.py,sha256=e_0sjtI8cjY5BNyZj1QBR0j6_oCScxGmSXYEpcYwuZE,576
|
43
|
-
seleniumbase/core/browser_launcher.py,sha256=
|
43
|
+
seleniumbase/core/browser_launcher.py,sha256=J-YrGmQg3teXszuaR8j08kzgnRBVyMwyRQkCnzgg2bA,187662
|
44
44
|
seleniumbase/core/capabilities_parser.py,sha256=meIS2uHapTCq2ldfNAToC7r0cKmZDRXuYNKExM1GHDY,6038
|
45
45
|
seleniumbase/core/colored_traceback.py,sha256=DrRWfg7XEnKcgY59Xj7Jdk09H-XqHYBSUpB-DiZt6iY,2020
|
46
46
|
seleniumbase/core/create_db_tables.sql,sha256=VWPtrdiW_HQ6yETHjqTu-VIrTwvd8I8o1NfBeaVSHpU,972
|
@@ -70,7 +70,7 @@ seleniumbase/extensions/disable_csp.zip,sha256=YMifIIgEBiLrEFrS1sfW4Exh4br1V4oK1
|
|
70
70
|
seleniumbase/extensions/recorder.zip,sha256=OOyzF-Ize2cSRu1CqhzSAq5vusI9hqLLd2OIApUHesI,11918
|
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=oaWxRanC4KVZGrZ-DjrpFTCsBL3PENVWm5kl8_9JDx0,701361
|
74
74
|
seleniumbase/fixtures/constants.py,sha256=TapuGLdERtvZPGMblVXkNGybr8tj8FMtN3sbJ3ygyoc,13569
|
75
75
|
seleniumbase/fixtures/css_to_xpath.py,sha256=9ouDB1xl4MJ2os6JOgTIAyHKOQfuxtxvXC3O5hSnEKA,1954
|
76
76
|
seleniumbase/fixtures/errors.py,sha256=KyxuEVx_e3MPhVrJfNIa_3ltMpbCFxfy_jxK8RFNTns,555
|
@@ -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.28.
|
141
|
-
seleniumbase-4.28.
|
142
|
-
seleniumbase-4.28.
|
143
|
-
seleniumbase-4.28.
|
144
|
-
seleniumbase-4.28.
|
145
|
-
seleniumbase-4.28.
|
140
|
+
seleniumbase-4.28.5.dist-info/LICENSE,sha256=odSYtWibXBnQ1gBg6CnDZ82n8kLF_if5-2nbqnEyD8k,1085
|
141
|
+
seleniumbase-4.28.5.dist-info/METADATA,sha256=ZuuvKLP50pY2HsIkp70zhjApZYUe2FY_z9SefBEAF_8,85546
|
142
|
+
seleniumbase-4.28.5.dist-info/WHEEL,sha256=y4mX-SOX4fYIkonsAGA5N0Oy-8_gI4FXw5HNI1xqvWg,91
|
143
|
+
seleniumbase-4.28.5.dist-info/entry_points.txt,sha256=CNrh2EKNaHYEhO6pP1RJyVLB99LkDDYX7TnUK8xfjqk,623
|
144
|
+
seleniumbase-4.28.5.dist-info/top_level.txt,sha256=4N97aBOQ8ETCnDnokBsWb07lJfTaq3C1ZzYRxvLMxqU,19
|
145
|
+
seleniumbase-4.28.5.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|