seleniumbase 4.43.2__py3-none-any.whl → 4.43.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/core/browser_launcher.py +68 -4
- seleniumbase/core/detect_b_ver.py +1 -1
- seleniumbase/core/sb_cdp.py +51 -21
- seleniumbase/drivers/atlas_drivers/__init__.py +0 -0
- seleniumbase/drivers/brave_drivers/__init__.py +0 -0
- seleniumbase/drivers/comet_drivers/__init__.py +0 -0
- seleniumbase/drivers/opera_drivers/__init__.py +0 -0
- seleniumbase/fixtures/constants.py +18 -0
- seleniumbase/fixtures/js_utils.py +2 -2
- seleniumbase/plugins/driver_manager.py +114 -0
- seleniumbase/plugins/pytest_plugin.py +125 -2
- seleniumbase/plugins/sb_manager.py +118 -1
- seleniumbase/plugins/selenium_plugin.py +123 -0
- seleniumbase/undetected/cdp_driver/cdp_util.py +14 -0
- {seleniumbase-4.43.2.dist-info → seleniumbase-4.43.3.dist-info}/METADATA +5 -1
- {seleniumbase-4.43.2.dist-info → seleniumbase-4.43.3.dist-info}/RECORD +21 -17
- {seleniumbase-4.43.2.dist-info → seleniumbase-4.43.3.dist-info}/WHEEL +0 -0
- {seleniumbase-4.43.2.dist-info → seleniumbase-4.43.3.dist-info}/entry_points.txt +0 -0
- {seleniumbase-4.43.2.dist-info → seleniumbase-4.43.3.dist-info}/licenses/LICENSE +0 -0
- {seleniumbase-4.43.2.dist-info → seleniumbase-4.43.3.dist-info}/top_level.txt +0 -0
seleniumbase/__version__.py
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
# seleniumbase package
|
|
2
|
-
__version__ = "4.43.
|
|
2
|
+
__version__ = "4.43.3"
|
|
@@ -28,6 +28,10 @@ from seleniumbase import decorators
|
|
|
28
28
|
from seleniumbase import drivers # webdriver storage folder for SeleniumBase
|
|
29
29
|
from seleniumbase.drivers import cft_drivers # chrome-for-testing
|
|
30
30
|
from seleniumbase.drivers import chs_drivers # chrome-headless-shell
|
|
31
|
+
from seleniumbase.drivers import opera_drivers # still uses chromedriver
|
|
32
|
+
from seleniumbase.drivers import brave_drivers # still uses chromedriver
|
|
33
|
+
from seleniumbase.drivers import comet_drivers # still uses chromedriver
|
|
34
|
+
from seleniumbase.drivers import atlas_drivers # still uses chromedriver
|
|
31
35
|
from seleniumbase import extensions # browser extensions storage folder
|
|
32
36
|
from seleniumbase.config import settings
|
|
33
37
|
from seleniumbase.core import detect_b_ver
|
|
@@ -44,6 +48,10 @@ urllib3.disable_warnings()
|
|
|
44
48
|
DRIVER_DIR = os.path.dirname(os.path.realpath(drivers.__file__))
|
|
45
49
|
DRIVER_DIR_CFT = os.path.dirname(os.path.realpath(cft_drivers.__file__))
|
|
46
50
|
DRIVER_DIR_CHS = os.path.dirname(os.path.realpath(chs_drivers.__file__))
|
|
51
|
+
DRIVER_DIR_OPERA = os.path.dirname(os.path.realpath(opera_drivers.__file__))
|
|
52
|
+
DRIVER_DIR_BRAVE = os.path.dirname(os.path.realpath(brave_drivers.__file__))
|
|
53
|
+
DRIVER_DIR_COMET = os.path.dirname(os.path.realpath(comet_drivers.__file__))
|
|
54
|
+
DRIVER_DIR_ATLAS = os.path.dirname(os.path.realpath(atlas_drivers.__file__))
|
|
47
55
|
# Make sure that the SeleniumBase DRIVER_DIR is at the top of the System PATH
|
|
48
56
|
# (Changes to the System PATH with os.environ only last during the test run)
|
|
49
57
|
if not os.environ["PATH"].startswith(DRIVER_DIR):
|
|
@@ -1218,8 +1226,8 @@ def uc_gui_click_x_y(driver, x, y, timeframe=0.25):
|
|
|
1218
1226
|
driver.cdp.minimize()
|
|
1219
1227
|
driver.cdp.set_window_rect(win_x, win_y, width, height)
|
|
1220
1228
|
if IS_WINDOWS:
|
|
1221
|
-
x = x * width_ratio
|
|
1222
|
-
y = y * width_ratio
|
|
1229
|
+
x = x * (width_ratio + 0.03)
|
|
1230
|
+
y = y * (width_ratio - 0.03)
|
|
1223
1231
|
_uc_gui_click_x_y(driver, x, y, timeframe=timeframe, uc_lock=False)
|
|
1224
1232
|
return
|
|
1225
1233
|
with suppress(Exception):
|
|
@@ -1260,7 +1268,7 @@ def _uc_gui_click_captcha(
|
|
|
1260
1268
|
ctype=None,
|
|
1261
1269
|
):
|
|
1262
1270
|
cdp_mode_on_at_start = __is_cdp_swap_needed(driver)
|
|
1263
|
-
if cdp_mode_on_at_start
|
|
1271
|
+
if cdp_mode_on_at_start:
|
|
1264
1272
|
return driver.cdp.gui_click_captcha()
|
|
1265
1273
|
_on_a_captcha_page = None
|
|
1266
1274
|
if ctype == "cf_t":
|
|
@@ -1952,6 +1960,15 @@ def get_valid_binary_names_for_browser(browser):
|
|
|
1952
1960
|
raise Exception("Invalid combination for OS browser binaries!")
|
|
1953
1961
|
|
|
1954
1962
|
|
|
1963
|
+
def _special_binary_exists(location, name):
|
|
1964
|
+
filename = str(location).split("/")[-1].split("\\")[-1]
|
|
1965
|
+
return (
|
|
1966
|
+
location
|
|
1967
|
+
and str(name).lower() in filename.lower()
|
|
1968
|
+
and os.path.exists(location)
|
|
1969
|
+
)
|
|
1970
|
+
|
|
1971
|
+
|
|
1955
1972
|
def _repair_chromedriver(chrome_options, headless_options, mcv=None):
|
|
1956
1973
|
if mcv:
|
|
1957
1974
|
subprocess.check_call(
|
|
@@ -2960,6 +2977,14 @@ def get_driver(
|
|
|
2960
2977
|
and sb_config.binary_location == "chs"
|
|
2961
2978
|
):
|
|
2962
2979
|
driver_dir = DRIVER_DIR_CHS
|
|
2980
|
+
if _special_binary_exists(binary_location, "opera"):
|
|
2981
|
+
driver_dir = DRIVER_DIR_OPERA
|
|
2982
|
+
if _special_binary_exists(binary_location, "brave"):
|
|
2983
|
+
driver_dir = DRIVER_DIR_BRAVE
|
|
2984
|
+
if _special_binary_exists(binary_location, "comet"):
|
|
2985
|
+
driver_dir = DRIVER_DIR_COMET
|
|
2986
|
+
if _special_binary_exists(binary_location, "atlas"):
|
|
2987
|
+
driver_dir = DRIVER_DIR_ATLAS
|
|
2963
2988
|
if (
|
|
2964
2989
|
hasattr(sb_config, "settings")
|
|
2965
2990
|
and hasattr(sb_config.settings, "NEW_DRIVER_DIR")
|
|
@@ -3919,6 +3944,18 @@ def get_local_driver(
|
|
|
3919
3944
|
):
|
|
3920
3945
|
special_chrome = True
|
|
3921
3946
|
driver_dir = DRIVER_DIR_CHS
|
|
3947
|
+
if _special_binary_exists(binary_location, "opera"):
|
|
3948
|
+
special_chrome = True
|
|
3949
|
+
driver_dir = DRIVER_DIR_OPERA
|
|
3950
|
+
if _special_binary_exists(binary_location, "brave"):
|
|
3951
|
+
special_chrome = True
|
|
3952
|
+
driver_dir = DRIVER_DIR_BRAVE
|
|
3953
|
+
if _special_binary_exists(binary_location, "comet"):
|
|
3954
|
+
special_chrome = True
|
|
3955
|
+
driver_dir = DRIVER_DIR_COMET
|
|
3956
|
+
if _special_binary_exists(binary_location, "atlas"):
|
|
3957
|
+
special_chrome = True
|
|
3958
|
+
driver_dir = DRIVER_DIR_ATLAS
|
|
3922
3959
|
if (
|
|
3923
3960
|
hasattr(sb_config, "settings")
|
|
3924
3961
|
and hasattr(sb_config.settings, "NEW_DRIVER_DIR")
|
|
@@ -4756,6 +4793,27 @@ def get_local_driver(
|
|
|
4756
4793
|
)
|
|
4757
4794
|
return extend_driver(driver)
|
|
4758
4795
|
elif browser_name == constants.Browser.GOOGLE_CHROME:
|
|
4796
|
+
set_chromium = None
|
|
4797
|
+
if _special_binary_exists(binary_location, "opera"):
|
|
4798
|
+
set_chromium = "opera"
|
|
4799
|
+
local_chromedriver = DRIVER_DIR_OPERA + "/chromedriver"
|
|
4800
|
+
if IS_WINDOWS:
|
|
4801
|
+
local_chromedriver = DRIVER_DIR_OPERA + "/chromedriver.exe"
|
|
4802
|
+
if _special_binary_exists(binary_location, "brave"):
|
|
4803
|
+
set_chromium = "brave"
|
|
4804
|
+
local_chromedriver = DRIVER_DIR_BRAVE + "/chromedriver"
|
|
4805
|
+
if IS_WINDOWS:
|
|
4806
|
+
local_chromedriver = DRIVER_DIR_BRAVE + "/chromedriver.exe"
|
|
4807
|
+
if _special_binary_exists(binary_location, "comet"):
|
|
4808
|
+
set_chromium = "comet"
|
|
4809
|
+
local_chromedriver = DRIVER_DIR_COMET + "/chromedriver"
|
|
4810
|
+
if IS_WINDOWS:
|
|
4811
|
+
local_chromedriver = DRIVER_DIR_COMET + "/chromedriver.exe"
|
|
4812
|
+
if _special_binary_exists(binary_location, "atlas"):
|
|
4813
|
+
set_chromium = "atlas"
|
|
4814
|
+
local_chromedriver = DRIVER_DIR_ATLAS + "/chromedriver"
|
|
4815
|
+
if IS_WINDOWS:
|
|
4816
|
+
local_chromedriver = DRIVER_DIR_ATLAS + "/chromedriver.exe"
|
|
4759
4817
|
try:
|
|
4760
4818
|
chrome_options = _set_chrome_options(
|
|
4761
4819
|
browser_name,
|
|
@@ -4877,6 +4935,12 @@ def get_local_driver(
|
|
|
4877
4935
|
major_chrome_version = None
|
|
4878
4936
|
if major_chrome_version:
|
|
4879
4937
|
use_version = major_chrome_version
|
|
4938
|
+
if (
|
|
4939
|
+
set_chromium == "opera"
|
|
4940
|
+
and use_version.isnumeric()
|
|
4941
|
+
and int(use_version) < 130
|
|
4942
|
+
):
|
|
4943
|
+
use_version = "130" # Special case
|
|
4880
4944
|
ch_driver_version = None
|
|
4881
4945
|
path_chromedriver = chromedriver_on_path()
|
|
4882
4946
|
if os.path.exists(local_chromedriver):
|
|
@@ -4894,7 +4958,7 @@ def get_local_driver(
|
|
|
4894
4958
|
ch_driver_version = output
|
|
4895
4959
|
if driver_version == "keep":
|
|
4896
4960
|
driver_version = ch_driver_version
|
|
4897
|
-
elif path_chromedriver:
|
|
4961
|
+
elif path_chromedriver and not set_chromium:
|
|
4898
4962
|
try:
|
|
4899
4963
|
make_driver_executable_if_not(path_chromedriver)
|
|
4900
4964
|
except Exception as e:
|
|
@@ -282,7 +282,7 @@ def opera_on_windows_path(browser_type=None):
|
|
|
282
282
|
"Opera/Application",
|
|
283
283
|
):
|
|
284
284
|
try:
|
|
285
|
-
candidates.append(os.sep.join((item, subitem, "
|
|
285
|
+
candidates.append(os.sep.join((item, subitem, "opera.exe")))
|
|
286
286
|
except TypeError:
|
|
287
287
|
pass
|
|
288
288
|
for candidate in candidates:
|
seleniumbase/core/sb_cdp.py
CHANGED
|
@@ -1333,6 +1333,17 @@ class CDPMethods():
|
|
|
1333
1333
|
x = window_rect["x"] + element_rect["x"]
|
|
1334
1334
|
y = w_bottom_y - viewport_height + element_rect["y"]
|
|
1335
1335
|
y_scroll_offset = window_rect["pageYOffset"]
|
|
1336
|
+
if (
|
|
1337
|
+
hasattr(sb_config, "_cdp_browser")
|
|
1338
|
+
and sb_config._cdp_browser == "opera"
|
|
1339
|
+
):
|
|
1340
|
+
# Handle special case where Opera side panel shifts coordinates
|
|
1341
|
+
x_offset = window_rect["outerWidth"] - window_rect["innerWidth"]
|
|
1342
|
+
if x_offset > 56:
|
|
1343
|
+
x_offset = 56
|
|
1344
|
+
elif x_offset < 22:
|
|
1345
|
+
x_offset = 0
|
|
1346
|
+
x = x + x_offset
|
|
1336
1347
|
y = y - y_scroll_offset
|
|
1337
1348
|
x = x + window_rect["scrollX"]
|
|
1338
1349
|
y = y + window_rect["scrollY"]
|
|
@@ -1674,11 +1685,6 @@ class CDPMethods():
|
|
|
1674
1685
|
import pyautogui
|
|
1675
1686
|
pyautogui = self.__get_configured_pyautogui(pyautogui)
|
|
1676
1687
|
screen_width, screen_height = pyautogui.size()
|
|
1677
|
-
if (
|
|
1678
|
-
hasattr(sb_config, "_cdp_browser")
|
|
1679
|
-
and sb_config._cdp_browser == "opera"
|
|
1680
|
-
):
|
|
1681
|
-
x = x + 55
|
|
1682
1688
|
if x < 0 or y < 0 or x > screen_width or y > screen_height:
|
|
1683
1689
|
raise Exception(
|
|
1684
1690
|
"PyAutoGUI cannot click on point (%s, %s)"
|
|
@@ -1731,8 +1737,8 @@ class CDPMethods():
|
|
|
1731
1737
|
self.__add_light_pause()
|
|
1732
1738
|
self.__set_window_rect(win_x, win_y, width, height)
|
|
1733
1739
|
self.__add_light_pause()
|
|
1734
|
-
x = x * width_ratio
|
|
1735
|
-
y = y * width_ratio
|
|
1740
|
+
x = x * (width_ratio + 0.03)
|
|
1741
|
+
y = y * (width_ratio - 0.03)
|
|
1736
1742
|
self.bring_active_window_to_front()
|
|
1737
1743
|
self.__gui_click_x_y(x, y, timeframe=timeframe, uc_lock=False)
|
|
1738
1744
|
|
|
@@ -1760,8 +1766,43 @@ class CDPMethods():
|
|
|
1760
1766
|
return True
|
|
1761
1767
|
return False
|
|
1762
1768
|
|
|
1769
|
+
def _on_a_g_recaptcha_page(self):
|
|
1770
|
+
time.sleep(0.042)
|
|
1771
|
+
source = self.get_page_source()
|
|
1772
|
+
if not source or len(source) < 400:
|
|
1773
|
+
time.sleep(0.22)
|
|
1774
|
+
source = self.get_page_source()
|
|
1775
|
+
if (
|
|
1776
|
+
'id="recaptcha-token"' in source
|
|
1777
|
+
or 'title="reCAPTCHA"' in source
|
|
1778
|
+
):
|
|
1779
|
+
return True
|
|
1780
|
+
return False
|
|
1781
|
+
|
|
1782
|
+
def __gui_click_recaptcha(self):
|
|
1783
|
+
selector = None
|
|
1784
|
+
if self.is_element_visible('iframe[title="reCAPTCHA"]'):
|
|
1785
|
+
selector = 'iframe[title="reCAPTCHA"]'
|
|
1786
|
+
else:
|
|
1787
|
+
return
|
|
1788
|
+
with suppress(Exception):
|
|
1789
|
+
time.sleep(0.08)
|
|
1790
|
+
element_rect = self.get_gui_element_rect(selector, timeout=1)
|
|
1791
|
+
e_x = element_rect["x"]
|
|
1792
|
+
e_y = element_rect["y"]
|
|
1793
|
+
x = e_x + 29
|
|
1794
|
+
y = e_y + 35
|
|
1795
|
+
sb_config._saved_cf_x_y = (x, y)
|
|
1796
|
+
time.sleep(0.08)
|
|
1797
|
+
self.gui_click_x_y(x, y)
|
|
1798
|
+
|
|
1763
1799
|
def gui_click_captcha(self):
|
|
1764
|
-
if
|
|
1800
|
+
if self._on_a_cf_turnstile_page():
|
|
1801
|
+
pass
|
|
1802
|
+
elif self._on_a_g_recaptcha_page():
|
|
1803
|
+
self.__gui_click_recaptcha()
|
|
1804
|
+
return
|
|
1805
|
+
else:
|
|
1765
1806
|
return
|
|
1766
1807
|
selector = None
|
|
1767
1808
|
if (
|
|
@@ -1926,7 +1967,7 @@ class CDPMethods():
|
|
|
1926
1967
|
if not shared_utils.is_windows():
|
|
1927
1968
|
y = e_y + 32
|
|
1928
1969
|
else:
|
|
1929
|
-
y = e_y +
|
|
1970
|
+
y = e_y + 28
|
|
1930
1971
|
sb_config._saved_cf_x_y = (x, y)
|
|
1931
1972
|
time.sleep(0.08)
|
|
1932
1973
|
self.gui_click_x_y(x, y)
|
|
@@ -1936,12 +1977,6 @@ class CDPMethods():
|
|
|
1936
1977
|
import pyautogui
|
|
1937
1978
|
pyautogui = self.__get_configured_pyautogui(pyautogui)
|
|
1938
1979
|
screen_width, screen_height = pyautogui.size()
|
|
1939
|
-
if (
|
|
1940
|
-
hasattr(sb_config, "_cdp_browser")
|
|
1941
|
-
and sb_config._cdp_browser == "opera"
|
|
1942
|
-
):
|
|
1943
|
-
x1 = x1 + 55
|
|
1944
|
-
x2 = x2 + 55
|
|
1945
1980
|
if x1 < 0 or y1 < 0 or x1 > screen_width or y1 > screen_height:
|
|
1946
1981
|
raise Exception(
|
|
1947
1982
|
"PyAutoGUI cannot drag-drop from point (%s, %s)"
|
|
@@ -2033,11 +2068,6 @@ class CDPMethods():
|
|
|
2033
2068
|
import pyautogui
|
|
2034
2069
|
pyautogui = self.__get_configured_pyautogui(pyautogui)
|
|
2035
2070
|
screen_width, screen_height = pyautogui.size()
|
|
2036
|
-
if (
|
|
2037
|
-
hasattr(sb_config, "_cdp_browser")
|
|
2038
|
-
and sb_config._cdp_browser == "opera"
|
|
2039
|
-
):
|
|
2040
|
-
x = x + 55
|
|
2041
2071
|
if x < 0 or y < 0 or x > screen_width or y > screen_height:
|
|
2042
2072
|
raise Exception(
|
|
2043
2073
|
"PyAutoGUI cannot hover on point (%s, %s)"
|
|
@@ -2118,7 +2148,7 @@ class CDPMethods():
|
|
|
2118
2148
|
if width > 0 and height > 0:
|
|
2119
2149
|
x, y = self.get_gui_element_center(selector)
|
|
2120
2150
|
self.bring_active_window_to_front()
|
|
2121
|
-
self.__gui_hover_x_y(x, y, timeframe=timeframe)
|
|
2151
|
+
self.__gui_hover_x_y(x, y, timeframe=timeframe, uc_lock=False)
|
|
2122
2152
|
self.__slow_mode_pause_if_set()
|
|
2123
2153
|
self.loop.run_until_complete(self.page.wait())
|
|
2124
2154
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -387,6 +387,20 @@ class ValidBrowsers:
|
|
|
387
387
|
"ie",
|
|
388
388
|
"safari",
|
|
389
389
|
"remote",
|
|
390
|
+
"opera",
|
|
391
|
+
"brave",
|
|
392
|
+
"comet",
|
|
393
|
+
"atlas",
|
|
394
|
+
]
|
|
395
|
+
|
|
396
|
+
|
|
397
|
+
class ChromiumSubs:
|
|
398
|
+
# Chromium browsers that still use chromedriver
|
|
399
|
+
chromium_subs = [
|
|
400
|
+
"opera",
|
|
401
|
+
"brave",
|
|
402
|
+
"comet",
|
|
403
|
+
"atlas",
|
|
390
404
|
]
|
|
391
405
|
|
|
392
406
|
|
|
@@ -430,8 +444,12 @@ class ValidBinaries:
|
|
|
430
444
|
"Google Chrome Beta",
|
|
431
445
|
"Google Chrome Dev",
|
|
432
446
|
"Brave Browser",
|
|
447
|
+
"Brave",
|
|
448
|
+
"Opera Browser",
|
|
433
449
|
"Opera",
|
|
450
|
+
"Comet Browser",
|
|
434
451
|
"Comet",
|
|
452
|
+
"Atlas Browser",
|
|
435
453
|
"Atlas",
|
|
436
454
|
]
|
|
437
455
|
valid_edge_binaries_on_macos = [
|
|
@@ -1278,7 +1278,7 @@ def scroll_to_element(driver, element):
|
|
|
1278
1278
|
try:
|
|
1279
1279
|
screen_width = driver.get_window_size()["width"]
|
|
1280
1280
|
except Exception:
|
|
1281
|
-
screen_width = execute_script("return window.innerWidth;")
|
|
1281
|
+
screen_width = execute_script(driver, "return window.innerWidth;")
|
|
1282
1282
|
element_location_y = element_location_y - constants.Scroll.Y_OFFSET
|
|
1283
1283
|
if element_location_y < 0:
|
|
1284
1284
|
element_location_y = 0
|
|
@@ -1327,7 +1327,7 @@ def slow_scroll_to_element(driver, element, *args, **kwargs):
|
|
|
1327
1327
|
try:
|
|
1328
1328
|
screen_width = driver.get_window_size()["width"]
|
|
1329
1329
|
except Exception:
|
|
1330
|
-
screen_width = execute_script("return window.innerWidth;")
|
|
1330
|
+
screen_width = execute_script(driver, "return window.innerWidth;")
|
|
1331
1331
|
element_location_y = element_location_y - constants.Scroll.Y_OFFSET
|
|
1332
1332
|
if element_location_y < 0:
|
|
1333
1333
|
element_location_y = 0
|
|
@@ -239,6 +239,7 @@ def Driver(
|
|
|
239
239
|
from seleniumbase import config as sb_config
|
|
240
240
|
from seleniumbase.config import settings
|
|
241
241
|
from seleniumbase.core import browser_launcher
|
|
242
|
+
from seleniumbase.core import detect_b_ver
|
|
242
243
|
from seleniumbase.fixtures import constants
|
|
243
244
|
from seleniumbase.fixtures import shared_utils
|
|
244
245
|
|
|
@@ -271,10 +272,37 @@ def Driver(
|
|
|
271
272
|
)
|
|
272
273
|
elif existing_runner:
|
|
273
274
|
sb_config._context_of_runner = True
|
|
275
|
+
sb_config._browser_shortcut = None
|
|
276
|
+
sb_config._cdp_browser = None
|
|
277
|
+
sb_config._cdp_bin_loc = None
|
|
274
278
|
browser_changes = 0
|
|
275
279
|
browser_set = None
|
|
276
280
|
browser_text = None
|
|
277
281
|
browser_list = []
|
|
282
|
+
# Check if binary-location in options
|
|
283
|
+
bin_loc_in_options = False
|
|
284
|
+
if (
|
|
285
|
+
binary_location
|
|
286
|
+
and len(str(binary_location)) > 5
|
|
287
|
+
and os.path.exists(str(binary_location))
|
|
288
|
+
):
|
|
289
|
+
bin_loc_in_options = True
|
|
290
|
+
else:
|
|
291
|
+
for arg in sys_argv:
|
|
292
|
+
if arg in ["--binary-location", "--binary_location", "--bl"]:
|
|
293
|
+
bin_loc_in_options = True
|
|
294
|
+
if (
|
|
295
|
+
browser
|
|
296
|
+
and browser in constants.ChromiumSubs.chromium_subs
|
|
297
|
+
and not bin_loc_in_options
|
|
298
|
+
):
|
|
299
|
+
bin_loc = detect_b_ver.get_binary_location(browser)
|
|
300
|
+
if bin_loc and os.path.exists(bin_loc):
|
|
301
|
+
if browser in bin_loc.lower().split("/")[-1].split("\\")[-1]:
|
|
302
|
+
sb_config._cdp_browser = browser
|
|
303
|
+
sb_config._cdp_bin_loc = bin_loc
|
|
304
|
+
binary_location = bin_loc
|
|
305
|
+
bin_loc_in_options = True
|
|
278
306
|
# As a shortcut, you can use "--edge" instead of "--browser=edge", etc,
|
|
279
307
|
# but you can only specify one default browser for tests. (Default: chrome)
|
|
280
308
|
if "--browser=chrome" in sys_argv or "--browser chrome" in sys_argv:
|
|
@@ -301,6 +329,46 @@ def Driver(
|
|
|
301
329
|
browser_changes += 1
|
|
302
330
|
browser_set = "remote"
|
|
303
331
|
browser_list.append("--browser=remote")
|
|
332
|
+
if "--browser=opera" in sys_argv or "--browser opera" in sys_argv:
|
|
333
|
+
if not bin_loc_in_options:
|
|
334
|
+
bin_loc = detect_b_ver.get_binary_location("opera")
|
|
335
|
+
if os.path.exists(bin_loc):
|
|
336
|
+
browser_changes += 1
|
|
337
|
+
browser_set = "opera"
|
|
338
|
+
sb_config._browser_shortcut = "opera"
|
|
339
|
+
sb_config._cdp_browser = "opera"
|
|
340
|
+
sb_config._cdp_bin_loc = bin_loc
|
|
341
|
+
browser_list.append("--browser=opera")
|
|
342
|
+
if "--browser=brave" in sys_argv or "--browser brave" in sys_argv:
|
|
343
|
+
if not bin_loc_in_options:
|
|
344
|
+
bin_loc = detect_b_ver.get_binary_location("brave")
|
|
345
|
+
if os.path.exists(bin_loc):
|
|
346
|
+
browser_changes += 1
|
|
347
|
+
browser_set = "brave"
|
|
348
|
+
sb_config._browser_shortcut = "brave"
|
|
349
|
+
sb_config._cdp_browser = "brave"
|
|
350
|
+
sb_config._cdp_bin_loc = bin_loc
|
|
351
|
+
browser_list.append("--browser=brave")
|
|
352
|
+
if "--browser=comet" in sys_argv or "--browser comet" in sys_argv:
|
|
353
|
+
if not bin_loc_in_options:
|
|
354
|
+
bin_loc = detect_b_ver.get_binary_location("comet")
|
|
355
|
+
if os.path.exists(bin_loc):
|
|
356
|
+
browser_changes += 1
|
|
357
|
+
browser_set = "comet"
|
|
358
|
+
sb_config._browser_shortcut = "comet"
|
|
359
|
+
sb_config._cdp_browser = "comet"
|
|
360
|
+
sb_config._cdp_bin_loc = bin_loc
|
|
361
|
+
browser_list.append("--browser=comet")
|
|
362
|
+
if "--browser=atlas" in sys_argv or "--browser atlas" in sys_argv:
|
|
363
|
+
if not bin_loc_in_options:
|
|
364
|
+
bin_loc = detect_b_ver.get_binary_location("atlas")
|
|
365
|
+
if os.path.exists(bin_loc):
|
|
366
|
+
browser_changes += 1
|
|
367
|
+
browser_set = "atlas"
|
|
368
|
+
sb_config._browser_shortcut = "atlas"
|
|
369
|
+
sb_config._cdp_browser = "atlas"
|
|
370
|
+
sb_config._cdp_bin_loc = bin_loc
|
|
371
|
+
browser_list.append("--browser=atlas")
|
|
304
372
|
browser_text = browser_set
|
|
305
373
|
if "--chrome" in sys_argv and not browser_set == "chrome":
|
|
306
374
|
browser_changes += 1
|
|
@@ -322,6 +390,46 @@ def Driver(
|
|
|
322
390
|
browser_changes += 1
|
|
323
391
|
browser_text = "safari"
|
|
324
392
|
browser_list.append("--safari")
|
|
393
|
+
if "--opera" in sys_argv and not browser_set == "opera":
|
|
394
|
+
if not bin_loc_in_options:
|
|
395
|
+
bin_loc = detect_b_ver.get_binary_location("opera")
|
|
396
|
+
if os.path.exists(bin_loc):
|
|
397
|
+
browser_changes += 1
|
|
398
|
+
browser_text = "opera"
|
|
399
|
+
sb_config._browser_shortcut = "opera"
|
|
400
|
+
sb_config._cdp_browser = "opera"
|
|
401
|
+
sb_config._cdp_bin_loc = bin_loc
|
|
402
|
+
browser_list.append("--opera")
|
|
403
|
+
if "--brave" in sys_argv and not browser_set == "brave":
|
|
404
|
+
if not bin_loc_in_options:
|
|
405
|
+
bin_loc = detect_b_ver.get_binary_location("brave")
|
|
406
|
+
if os.path.exists(bin_loc):
|
|
407
|
+
browser_changes += 1
|
|
408
|
+
browser_text = "brave"
|
|
409
|
+
sb_config._browser_shortcut = "brave"
|
|
410
|
+
sb_config._cdp_browser = "brave"
|
|
411
|
+
sb_config._cdp_bin_loc = bin_loc
|
|
412
|
+
browser_list.append("--brave")
|
|
413
|
+
if "--comet" in sys_argv and not browser_set == "comet":
|
|
414
|
+
if not bin_loc_in_options:
|
|
415
|
+
bin_loc = detect_b_ver.get_binary_location("comet")
|
|
416
|
+
if os.path.exists(bin_loc):
|
|
417
|
+
browser_changes += 1
|
|
418
|
+
browser_text = "comet"
|
|
419
|
+
sb_config._browser_shortcut = "comet"
|
|
420
|
+
sb_config._cdp_browser = "comet"
|
|
421
|
+
sb_config._cdp_bin_loc = bin_loc
|
|
422
|
+
browser_list.append("--comet")
|
|
423
|
+
if "--atlas" in sys_argv and not browser_set == "atlas":
|
|
424
|
+
if not bin_loc_in_options:
|
|
425
|
+
bin_loc = detect_b_ver.get_binary_location("atlas")
|
|
426
|
+
if os.path.exists(bin_loc):
|
|
427
|
+
browser_changes += 1
|
|
428
|
+
browser_text = "atlas"
|
|
429
|
+
sb_config._browser_shortcut = "atlas"
|
|
430
|
+
sb_config._cdp_browser = "atlas"
|
|
431
|
+
sb_config._cdp_bin_loc = bin_loc
|
|
432
|
+
browser_list.append("--atlas")
|
|
325
433
|
if browser_changes > 1:
|
|
326
434
|
message = "\n\n TOO MANY browser types were entered!"
|
|
327
435
|
message += "\n There were %s found:\n > %s" % (
|
|
@@ -345,6 +453,10 @@ def Driver(
|
|
|
345
453
|
"Browser: {%s} is not a valid browser option. "
|
|
346
454
|
"Valid options = {%s}" % (browser, valid_browsers)
|
|
347
455
|
)
|
|
456
|
+
if sb_config._browser_shortcut:
|
|
457
|
+
browser = sb_config._browser_shortcut
|
|
458
|
+
if browser in constants.ChromiumSubs.chromium_subs:
|
|
459
|
+
browser = "chrome" # Still uses chromedriver
|
|
348
460
|
if headless is None:
|
|
349
461
|
if "--headless" in sys_argv:
|
|
350
462
|
headless = True
|
|
@@ -534,6 +646,8 @@ def Driver(
|
|
|
534
646
|
count += 1
|
|
535
647
|
user_agent = agent
|
|
536
648
|
found_bl = None
|
|
649
|
+
if hasattr(sb_config, "_cdp_bin_loc") and sb_config._cdp_bin_loc:
|
|
650
|
+
binary_location = sb_config._cdp_bin_loc
|
|
537
651
|
if binary_location is None and "--binary-location" in arg_join:
|
|
538
652
|
count = 0
|
|
539
653
|
for arg in sys_argv:
|
|
@@ -7,6 +7,7 @@ import time
|
|
|
7
7
|
from contextlib import suppress
|
|
8
8
|
from seleniumbase import config as sb_config
|
|
9
9
|
from seleniumbase.config import settings
|
|
10
|
+
from seleniumbase.core import detect_b_ver
|
|
10
11
|
from seleniumbase.core import log_helper
|
|
11
12
|
from seleniumbase.fixtures import constants
|
|
12
13
|
from seleniumbase.fixtures import shared_utils
|
|
@@ -28,6 +29,10 @@ def pytest_addoption(parser):
|
|
|
28
29
|
--edge (Shortcut for "--browser=edge".)
|
|
29
30
|
--firefox (Shortcut for "--browser=firefox".)
|
|
30
31
|
--safari (Shortcut for "--browser=safari".)
|
|
32
|
+
--opera (Shortcut for "--browser=opera".)
|
|
33
|
+
--brave (Shortcut for "--browser=brave".)
|
|
34
|
+
--comet (Shortcut for "--browser=comet".)
|
|
35
|
+
--atlas (Shortcut for "--browser=atlas".)
|
|
31
36
|
--cft (Shortcut for using `Chrome for Testing`)
|
|
32
37
|
--chs (Shortcut for using `Chrome-Headless-Shell`)
|
|
33
38
|
--settings-file=FILE (Override default SeleniumBase settings.)
|
|
@@ -186,6 +191,34 @@ def pytest_addoption(parser):
|
|
|
186
191
|
default=False,
|
|
187
192
|
help="""Shortcut for --browser=safari""",
|
|
188
193
|
)
|
|
194
|
+
parser.addoption(
|
|
195
|
+
"--opera",
|
|
196
|
+
action="store_true",
|
|
197
|
+
dest="use_opera",
|
|
198
|
+
default=False,
|
|
199
|
+
help="""Shortcut for --browser=opera""",
|
|
200
|
+
)
|
|
201
|
+
parser.addoption(
|
|
202
|
+
"--brave",
|
|
203
|
+
action="store_true",
|
|
204
|
+
dest="use_brave",
|
|
205
|
+
default=False,
|
|
206
|
+
help="""Shortcut for --browser=brave""",
|
|
207
|
+
)
|
|
208
|
+
parser.addoption(
|
|
209
|
+
"--comet",
|
|
210
|
+
action="store_true",
|
|
211
|
+
dest="use_comet",
|
|
212
|
+
default=False,
|
|
213
|
+
help="""Shortcut for --browser=comet""",
|
|
214
|
+
)
|
|
215
|
+
parser.addoption(
|
|
216
|
+
"--atlas",
|
|
217
|
+
action="store_true",
|
|
218
|
+
dest="use_atlas",
|
|
219
|
+
default=False,
|
|
220
|
+
help="""Shortcut for --browser=atlas""",
|
|
221
|
+
)
|
|
189
222
|
parser.addoption(
|
|
190
223
|
"--cft",
|
|
191
224
|
action="store_true",
|
|
@@ -1388,8 +1421,14 @@ def pytest_addoption(parser):
|
|
|
1388
1421
|
|
|
1389
1422
|
arg_join = " ".join(sys_argv)
|
|
1390
1423
|
sb_config._browser_shortcut = None
|
|
1424
|
+
sb_config._cdp_browser = None
|
|
1425
|
+
sb_config._cdp_bin_loc = None
|
|
1391
1426
|
sb_config._vd_list = []
|
|
1392
|
-
|
|
1427
|
+
# Check if binary-location in options
|
|
1428
|
+
bin_loc_in_options = False
|
|
1429
|
+
for arg in sys_argv:
|
|
1430
|
+
if arg in ["--binary-location", "--binary_location", "--bl"]:
|
|
1431
|
+
bin_loc_in_options = True
|
|
1393
1432
|
# SeleniumBase does not support pytest-timeout due to hanging browsers.
|
|
1394
1433
|
for arg in sys_argv:
|
|
1395
1434
|
if "--timeout=" in arg:
|
|
@@ -1465,6 +1504,46 @@ def pytest_addoption(parser):
|
|
|
1465
1504
|
browser_changes += 1
|
|
1466
1505
|
browser_set = "remote"
|
|
1467
1506
|
browser_list.append("--browser=remote")
|
|
1507
|
+
if "--browser=opera" in sys_argv or "--browser opera" in sys_argv:
|
|
1508
|
+
if not bin_loc_in_options:
|
|
1509
|
+
bin_loc = detect_b_ver.get_binary_location("opera")
|
|
1510
|
+
if os.path.exists(bin_loc):
|
|
1511
|
+
browser_changes += 1
|
|
1512
|
+
browser_set = "opera"
|
|
1513
|
+
sb_config._browser_shortcut = "opera"
|
|
1514
|
+
sb_config._cdp_browser = "opera"
|
|
1515
|
+
sb_config._cdp_bin_loc = bin_loc
|
|
1516
|
+
browser_list.append("--browser=opera")
|
|
1517
|
+
if "--browser=brave" in sys_argv or "--browser brave" in sys_argv:
|
|
1518
|
+
if not bin_loc_in_options:
|
|
1519
|
+
bin_loc = detect_b_ver.get_binary_location("brave")
|
|
1520
|
+
if os.path.exists(bin_loc):
|
|
1521
|
+
browser_changes += 1
|
|
1522
|
+
browser_set = "brave"
|
|
1523
|
+
sb_config._browser_shortcut = "brave"
|
|
1524
|
+
sb_config._cdp_browser = "brave"
|
|
1525
|
+
sb_config._cdp_bin_loc = bin_loc
|
|
1526
|
+
browser_list.append("--browser=brave")
|
|
1527
|
+
if "--browser=comet" in sys_argv or "--browser comet" in sys_argv:
|
|
1528
|
+
if not bin_loc_in_options:
|
|
1529
|
+
bin_loc = detect_b_ver.get_binary_location("comet")
|
|
1530
|
+
if os.path.exists(bin_loc):
|
|
1531
|
+
browser_changes += 1
|
|
1532
|
+
browser_set = "comet"
|
|
1533
|
+
sb_config._browser_shortcut = "comet"
|
|
1534
|
+
sb_config._cdp_browser = "comet"
|
|
1535
|
+
sb_config._cdp_bin_loc = bin_loc
|
|
1536
|
+
browser_list.append("--browser=comet")
|
|
1537
|
+
if "--browser=atlas" in sys_argv or "--browser atlas" in sys_argv:
|
|
1538
|
+
if not bin_loc_in_options:
|
|
1539
|
+
bin_loc = detect_b_ver.get_binary_location("atlas")
|
|
1540
|
+
if os.path.exists(bin_loc):
|
|
1541
|
+
browser_changes += 1
|
|
1542
|
+
browser_set = "atlas"
|
|
1543
|
+
sb_config._browser_shortcut = "atlas"
|
|
1544
|
+
sb_config._cdp_browser = "atlas"
|
|
1545
|
+
sb_config._cdp_bin_loc = bin_loc
|
|
1546
|
+
browser_list.append("--browser=atlas")
|
|
1468
1547
|
browser_text = browser_set
|
|
1469
1548
|
if "--chrome" in sys_argv and not browser_set == "chrome":
|
|
1470
1549
|
browser_changes += 1
|
|
@@ -1491,6 +1570,46 @@ def pytest_addoption(parser):
|
|
|
1491
1570
|
browser_text = "safari"
|
|
1492
1571
|
sb_config._browser_shortcut = "safari"
|
|
1493
1572
|
browser_list.append("--safari")
|
|
1573
|
+
if "--opera" in sys_argv and not browser_set == "opera":
|
|
1574
|
+
if not bin_loc_in_options:
|
|
1575
|
+
bin_loc = detect_b_ver.get_binary_location("opera")
|
|
1576
|
+
if os.path.exists(bin_loc):
|
|
1577
|
+
browser_changes += 1
|
|
1578
|
+
browser_text = "opera"
|
|
1579
|
+
sb_config._browser_shortcut = "opera"
|
|
1580
|
+
sb_config._cdp_browser = "opera"
|
|
1581
|
+
sb_config._cdp_bin_loc = bin_loc
|
|
1582
|
+
browser_list.append("--opera")
|
|
1583
|
+
if "--brave" in sys_argv and not browser_set == "brave":
|
|
1584
|
+
if not bin_loc_in_options:
|
|
1585
|
+
bin_loc = detect_b_ver.get_binary_location("brave")
|
|
1586
|
+
if os.path.exists(bin_loc):
|
|
1587
|
+
browser_changes += 1
|
|
1588
|
+
browser_text = "brave"
|
|
1589
|
+
sb_config._browser_shortcut = "brave"
|
|
1590
|
+
sb_config._cdp_browser = "brave"
|
|
1591
|
+
sb_config._cdp_bin_loc = bin_loc
|
|
1592
|
+
browser_list.append("--brave")
|
|
1593
|
+
if "--comet" in sys_argv and not browser_set == "comet":
|
|
1594
|
+
if not bin_loc_in_options:
|
|
1595
|
+
bin_loc = detect_b_ver.get_binary_location("comet")
|
|
1596
|
+
if os.path.exists(bin_loc):
|
|
1597
|
+
browser_changes += 1
|
|
1598
|
+
browser_text = "comet"
|
|
1599
|
+
sb_config._browser_shortcut = "comet"
|
|
1600
|
+
sb_config._cdp_browser = "comet"
|
|
1601
|
+
sb_config._cdp_bin_loc = bin_loc
|
|
1602
|
+
browser_list.append("--comet")
|
|
1603
|
+
if "--atlas" in sys_argv and not browser_set == "atlas":
|
|
1604
|
+
if not bin_loc_in_options:
|
|
1605
|
+
bin_loc = detect_b_ver.get_binary_location("atlas")
|
|
1606
|
+
if os.path.exists(bin_loc):
|
|
1607
|
+
browser_changes += 1
|
|
1608
|
+
browser_text = "atlas"
|
|
1609
|
+
sb_config._browser_shortcut = "atlas"
|
|
1610
|
+
sb_config._cdp_browser = "atlas"
|
|
1611
|
+
sb_config._cdp_bin_loc = bin_loc
|
|
1612
|
+
browser_list.append("--atlas")
|
|
1494
1613
|
if browser_changes > 1:
|
|
1495
1614
|
message = "\n TOO MANY browser types were entered!"
|
|
1496
1615
|
message += "\n There were %s found:\n > %s" % (
|
|
@@ -1525,7 +1644,7 @@ def pytest_addoption(parser):
|
|
|
1525
1644
|
undetectable = True
|
|
1526
1645
|
if (
|
|
1527
1646
|
browser_changes == 1
|
|
1528
|
-
and browser_text not in ["chrome"]
|
|
1647
|
+
and browser_text not in ["chrome", "opera", "brave", "comet", "atlas"]
|
|
1529
1648
|
and undetectable
|
|
1530
1649
|
):
|
|
1531
1650
|
message = (
|
|
@@ -1557,6 +1676,8 @@ def pytest_configure(config):
|
|
|
1557
1676
|
sb_config.browser = config.getoption("browser")
|
|
1558
1677
|
if sb_config._browser_shortcut:
|
|
1559
1678
|
sb_config.browser = sb_config._browser_shortcut
|
|
1679
|
+
if sb_config.browser in constants.ChromiumSubs.chromium_subs:
|
|
1680
|
+
sb_config.browser = "chrome" # Still uses chromedriver
|
|
1560
1681
|
sb_config.account = config.getoption("account")
|
|
1561
1682
|
sb_config.data = config.getoption("data")
|
|
1562
1683
|
sb_config.var1 = config.getoption("var1")
|
|
@@ -1591,6 +1712,8 @@ def pytest_configure(config):
|
|
|
1591
1712
|
sb_config.extension_dir = config.getoption("extension_dir")
|
|
1592
1713
|
sb_config.disable_features = config.getoption("disable_features")
|
|
1593
1714
|
sb_config.binary_location = config.getoption("binary_location")
|
|
1715
|
+
if hasattr(sb_config, "_cdp_bin_loc") and sb_config._cdp_bin_loc:
|
|
1716
|
+
sb_config.binary_location = sb_config._cdp_bin_loc
|
|
1594
1717
|
if config.getoption("use_cft") and not sb_config.binary_location:
|
|
1595
1718
|
sb_config.binary_location = "cft"
|
|
1596
1719
|
elif config.getoption("use_chs") and not sb_config.binary_location:
|
|
@@ -267,6 +267,7 @@ def SB(
|
|
|
267
267
|
import traceback
|
|
268
268
|
from seleniumbase import config as sb_config
|
|
269
269
|
from seleniumbase.config import settings
|
|
270
|
+
from seleniumbase.core import detect_b_ver
|
|
270
271
|
from seleniumbase.fixtures import constants
|
|
271
272
|
from seleniumbase.fixtures import shared_utils
|
|
272
273
|
|
|
@@ -334,10 +335,37 @@ def SB(
|
|
|
334
335
|
raise_test_failure = True # Exit on first error or failed test.
|
|
335
336
|
else:
|
|
336
337
|
raise_test_failure = False
|
|
338
|
+
sb_config._browser_shortcut = None
|
|
339
|
+
sb_config._cdp_browser = None
|
|
340
|
+
sb_config._cdp_bin_loc = None
|
|
337
341
|
browser_changes = 0
|
|
338
342
|
browser_set = None
|
|
339
343
|
browser_text = None
|
|
340
344
|
browser_list = []
|
|
345
|
+
# Check if binary-location in options
|
|
346
|
+
bin_loc_in_options = False
|
|
347
|
+
if (
|
|
348
|
+
binary_location
|
|
349
|
+
and len(str(binary_location)) > 5
|
|
350
|
+
and os.path.exists(str(binary_location))
|
|
351
|
+
):
|
|
352
|
+
bin_loc_in_options = True
|
|
353
|
+
else:
|
|
354
|
+
for arg in sys_argv:
|
|
355
|
+
if arg in ["--binary-location", "--binary_location", "--bl"]:
|
|
356
|
+
bin_loc_in_options = True
|
|
357
|
+
if (
|
|
358
|
+
browser
|
|
359
|
+
and browser in constants.ChromiumSubs.chromium_subs
|
|
360
|
+
and not bin_loc_in_options
|
|
361
|
+
):
|
|
362
|
+
bin_loc = detect_b_ver.get_binary_location(browser)
|
|
363
|
+
if bin_loc and os.path.exists(bin_loc):
|
|
364
|
+
if browser in bin_loc.lower().split("/")[-1].split("\\")[-1]:
|
|
365
|
+
sb_config._cdp_browser = browser
|
|
366
|
+
sb_config._cdp_bin_loc = bin_loc
|
|
367
|
+
binary_location = bin_loc
|
|
368
|
+
bin_loc_in_options = True
|
|
341
369
|
# As a shortcut, you can use "--edge" instead of "--browser=edge", etc,
|
|
342
370
|
# but you can only specify one default browser for tests. (Default: chrome)
|
|
343
371
|
if "--browser=chrome" in sys_argv or "--browser chrome" in sys_argv:
|
|
@@ -364,6 +392,46 @@ def SB(
|
|
|
364
392
|
browser_changes += 1
|
|
365
393
|
browser_set = "remote"
|
|
366
394
|
browser_list.append("--browser=remote")
|
|
395
|
+
if "--browser=opera" in sys_argv or "--browser opera" in sys_argv:
|
|
396
|
+
if not bin_loc_in_options:
|
|
397
|
+
bin_loc = detect_b_ver.get_binary_location("opera")
|
|
398
|
+
if os.path.exists(bin_loc):
|
|
399
|
+
browser_changes += 1
|
|
400
|
+
browser_set = "opera"
|
|
401
|
+
sb_config._browser_shortcut = "opera"
|
|
402
|
+
sb_config._cdp_browser = "opera"
|
|
403
|
+
sb_config._cdp_bin_loc = bin_loc
|
|
404
|
+
browser_list.append("--browser=opera")
|
|
405
|
+
if "--browser=brave" in sys_argv or "--browser brave" in sys_argv:
|
|
406
|
+
if not bin_loc_in_options:
|
|
407
|
+
bin_loc = detect_b_ver.get_binary_location("brave")
|
|
408
|
+
if os.path.exists(bin_loc):
|
|
409
|
+
browser_changes += 1
|
|
410
|
+
browser_set = "brave"
|
|
411
|
+
sb_config._browser_shortcut = "brave"
|
|
412
|
+
sb_config._cdp_browser = "brave"
|
|
413
|
+
sb_config._cdp_bin_loc = bin_loc
|
|
414
|
+
browser_list.append("--browser=brave")
|
|
415
|
+
if "--browser=comet" in sys_argv or "--browser comet" in sys_argv:
|
|
416
|
+
if not bin_loc_in_options:
|
|
417
|
+
bin_loc = detect_b_ver.get_binary_location("comet")
|
|
418
|
+
if os.path.exists(bin_loc):
|
|
419
|
+
browser_changes += 1
|
|
420
|
+
browser_set = "comet"
|
|
421
|
+
sb_config._browser_shortcut = "comet"
|
|
422
|
+
sb_config._cdp_browser = "comet"
|
|
423
|
+
sb_config._cdp_bin_loc = bin_loc
|
|
424
|
+
browser_list.append("--browser=comet")
|
|
425
|
+
if "--browser=atlas" in sys_argv or "--browser atlas" in sys_argv:
|
|
426
|
+
if not bin_loc_in_options:
|
|
427
|
+
bin_loc = detect_b_ver.get_binary_location("atlas")
|
|
428
|
+
if os.path.exists(bin_loc):
|
|
429
|
+
browser_changes += 1
|
|
430
|
+
browser_set = "atlas"
|
|
431
|
+
sb_config._browser_shortcut = "atlas"
|
|
432
|
+
sb_config._cdp_browser = "atlas"
|
|
433
|
+
sb_config._cdp_bin_loc = bin_loc
|
|
434
|
+
browser_list.append("--browser=atlas")
|
|
367
435
|
browser_text = browser_set
|
|
368
436
|
if "--chrome" in sys_argv and not browser_set == "chrome":
|
|
369
437
|
browser_changes += 1
|
|
@@ -390,6 +458,46 @@ def SB(
|
|
|
390
458
|
browser_text = "safari"
|
|
391
459
|
sb_config._browser_shortcut = "safari"
|
|
392
460
|
browser_list.append("--safari")
|
|
461
|
+
if "--opera" in sys_argv and not browser_set == "opera":
|
|
462
|
+
if not bin_loc_in_options:
|
|
463
|
+
bin_loc = detect_b_ver.get_binary_location("opera")
|
|
464
|
+
if os.path.exists(bin_loc):
|
|
465
|
+
browser_changes += 1
|
|
466
|
+
browser_text = "opera"
|
|
467
|
+
sb_config._browser_shortcut = "opera"
|
|
468
|
+
sb_config._cdp_browser = "opera"
|
|
469
|
+
sb_config._cdp_bin_loc = bin_loc
|
|
470
|
+
browser_list.append("--opera")
|
|
471
|
+
if "--brave" in sys_argv and not browser_set == "brave":
|
|
472
|
+
if not bin_loc_in_options:
|
|
473
|
+
bin_loc = detect_b_ver.get_binary_location("brave")
|
|
474
|
+
if os.path.exists(bin_loc):
|
|
475
|
+
browser_changes += 1
|
|
476
|
+
browser_text = "brave"
|
|
477
|
+
sb_config._browser_shortcut = "brave"
|
|
478
|
+
sb_config._cdp_browser = "brave"
|
|
479
|
+
sb_config._cdp_bin_loc = bin_loc
|
|
480
|
+
browser_list.append("--brave")
|
|
481
|
+
if "--comet" in sys_argv and not browser_set == "comet":
|
|
482
|
+
if not bin_loc_in_options:
|
|
483
|
+
bin_loc = detect_b_ver.get_binary_location("comet")
|
|
484
|
+
if os.path.exists(bin_loc):
|
|
485
|
+
browser_changes += 1
|
|
486
|
+
browser_text = "comet"
|
|
487
|
+
sb_config._browser_shortcut = "comet"
|
|
488
|
+
sb_config._cdp_browser = "comet"
|
|
489
|
+
sb_config._cdp_bin_loc = bin_loc
|
|
490
|
+
browser_list.append("--comet")
|
|
491
|
+
if "--atlas" in sys_argv and not browser_set == "atlas":
|
|
492
|
+
if not bin_loc_in_options:
|
|
493
|
+
bin_loc = detect_b_ver.get_binary_location("atlas")
|
|
494
|
+
if os.path.exists(bin_loc):
|
|
495
|
+
browser_changes += 1
|
|
496
|
+
browser_text = "atlas"
|
|
497
|
+
sb_config._browser_shortcut = "atlas"
|
|
498
|
+
sb_config._cdp_browser = "atlas"
|
|
499
|
+
sb_config._cdp_bin_loc = bin_loc
|
|
500
|
+
browser_list.append("--atlas")
|
|
393
501
|
if browser_changes > 1:
|
|
394
502
|
message = "\n\n TOO MANY browser types were entered!"
|
|
395
503
|
message += "\n There were %s found:\n > %s" % (
|
|
@@ -692,7 +800,10 @@ def SB(
|
|
|
692
800
|
uc_cdp_events = True
|
|
693
801
|
else:
|
|
694
802
|
uc_cdp_events = False
|
|
695
|
-
if
|
|
803
|
+
if (
|
|
804
|
+
undetectable
|
|
805
|
+
and browser not in ["chrome", "opera", "brave", "comet", "atlas"]
|
|
806
|
+
):
|
|
696
807
|
message = (
|
|
697
808
|
'\n Undetected-Chromedriver Mode ONLY supports Chrome!'
|
|
698
809
|
'\n ("uc=True" / "undetectable=True" / "--uc")'
|
|
@@ -1019,6 +1130,10 @@ def SB(
|
|
|
1019
1130
|
|
|
1020
1131
|
sb_config.with_testing_base = with_testing_base
|
|
1021
1132
|
sb_config.browser = browser
|
|
1133
|
+
if sb_config._browser_shortcut:
|
|
1134
|
+
sb_config.browser = sb_config._browser_shortcut
|
|
1135
|
+
if sb_config.browser in constants.ChromiumSubs.chromium_subs:
|
|
1136
|
+
sb_config.browser = "chrome" # Still uses chromedriver
|
|
1022
1137
|
if not hasattr(sb_config, "is_behave"):
|
|
1023
1138
|
sb_config.is_behave = False
|
|
1024
1139
|
if not hasattr(sb_config, "is_pytest"):
|
|
@@ -1082,6 +1197,8 @@ def SB(
|
|
|
1082
1197
|
sb_config.save_screenshot = save_screenshot
|
|
1083
1198
|
sb_config.no_screenshot = no_screenshot
|
|
1084
1199
|
sb_config.binary_location = binary_location
|
|
1200
|
+
if hasattr(sb_config, "_cdp_bin_loc") and sb_config._cdp_bin_loc:
|
|
1201
|
+
sb_config.binary_location = sb_config._cdp_bin_loc
|
|
1085
1202
|
sb_config.driver_version = driver_version
|
|
1086
1203
|
sb_config.page_load_strategy = page_load_strategy
|
|
1087
1204
|
sb_config.timeout_multiplier = timeout_multiplier
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
"""Selenium Plugin for SeleniumBase tests that run with pynose / nosetests"""
|
|
2
|
+
import os
|
|
2
3
|
import sys
|
|
3
4
|
from contextlib import suppress
|
|
4
5
|
from nose.plugins import Plugin
|
|
5
6
|
from seleniumbase import config as sb_config
|
|
6
7
|
from seleniumbase.config import settings
|
|
8
|
+
from seleniumbase.core import detect_b_ver
|
|
7
9
|
from seleniumbase.core import proxy_helper
|
|
8
10
|
from seleniumbase.fixtures import constants
|
|
9
11
|
from seleniumbase.fixtures import shared_utils
|
|
@@ -16,6 +18,10 @@ class SeleniumBrowser(Plugin):
|
|
|
16
18
|
--edge (Shortcut for "--browser=edge".)
|
|
17
19
|
--firefox (Shortcut for "--browser=firefox".)
|
|
18
20
|
--safari (Shortcut for "--browser=safari".)
|
|
21
|
+
--opera (Shortcut for "--browser=opera".)
|
|
22
|
+
--brave (Shortcut for "--browser=brave".)
|
|
23
|
+
--comet (Shortcut for "--browser=comet".)
|
|
24
|
+
--atlas (Shortcut for "--browser=atlas".)
|
|
19
25
|
--cft (Shortcut for using `Chrome for Testing`)
|
|
20
26
|
--chs (Shortcut for using `Chrome-Headless-Shell`)
|
|
21
27
|
--user-data-dir=DIR (Set the Chrome user data directory to use.)
|
|
@@ -146,6 +152,34 @@ class SeleniumBrowser(Plugin):
|
|
|
146
152
|
default=False,
|
|
147
153
|
help="""Shortcut for --browser=safari""",
|
|
148
154
|
)
|
|
155
|
+
parser.addoption(
|
|
156
|
+
"--opera",
|
|
157
|
+
action="store_true",
|
|
158
|
+
dest="use_opera",
|
|
159
|
+
default=False,
|
|
160
|
+
help="""Shortcut for --browser=opera""",
|
|
161
|
+
)
|
|
162
|
+
parser.addoption(
|
|
163
|
+
"--brave",
|
|
164
|
+
action="store_true",
|
|
165
|
+
dest="use_brave",
|
|
166
|
+
default=False,
|
|
167
|
+
help="""Shortcut for --browser=brave""",
|
|
168
|
+
)
|
|
169
|
+
parser.addoption(
|
|
170
|
+
"--comet",
|
|
171
|
+
action="store_true",
|
|
172
|
+
dest="use_comet",
|
|
173
|
+
default=False,
|
|
174
|
+
help="""Shortcut for --browser=comet""",
|
|
175
|
+
)
|
|
176
|
+
parser.addoption(
|
|
177
|
+
"--atlas",
|
|
178
|
+
action="store_true",
|
|
179
|
+
dest="use_atlas",
|
|
180
|
+
default=False,
|
|
181
|
+
help="""Shortcut for --browser=atlas""",
|
|
182
|
+
)
|
|
149
183
|
parser.addoption(
|
|
150
184
|
"--cft",
|
|
151
185
|
action="store_true",
|
|
@@ -1057,6 +1091,11 @@ class SeleniumBrowser(Plugin):
|
|
|
1057
1091
|
browser_set = None
|
|
1058
1092
|
browser_text = None
|
|
1059
1093
|
browser_list = []
|
|
1094
|
+
# Check if binary-location in options
|
|
1095
|
+
bin_loc_in_options = False
|
|
1096
|
+
for arg in sys_argv:
|
|
1097
|
+
if arg in ["--binary-location", "--binary_location", "--bl"]:
|
|
1098
|
+
bin_loc_in_options = True
|
|
1060
1099
|
if "--browser=chrome" in sys_argv or "--browser chrome" in sys_argv:
|
|
1061
1100
|
browser_changes += 1
|
|
1062
1101
|
browser_set = "chrome"
|
|
@@ -1081,6 +1120,46 @@ class SeleniumBrowser(Plugin):
|
|
|
1081
1120
|
browser_changes += 1
|
|
1082
1121
|
browser_set = "remote"
|
|
1083
1122
|
browser_list.append("--browser=remote")
|
|
1123
|
+
if "--browser=opera" in sys_argv or "--browser opera" in sys_argv:
|
|
1124
|
+
if not bin_loc_in_options:
|
|
1125
|
+
bin_loc = detect_b_ver.get_binary_location("opera")
|
|
1126
|
+
if os.path.exists(bin_loc):
|
|
1127
|
+
browser_changes += 1
|
|
1128
|
+
browser_set = "opera"
|
|
1129
|
+
sb_config._browser_shortcut = "opera"
|
|
1130
|
+
sb_config._cdp_browser = "opera"
|
|
1131
|
+
sb_config._cdp_bin_loc = bin_loc
|
|
1132
|
+
browser_list.append("--browser=opera")
|
|
1133
|
+
if "--browser=brave" in sys_argv or "--browser brave" in sys_argv:
|
|
1134
|
+
if not bin_loc_in_options:
|
|
1135
|
+
bin_loc = detect_b_ver.get_binary_location("brave")
|
|
1136
|
+
if os.path.exists(bin_loc):
|
|
1137
|
+
browser_changes += 1
|
|
1138
|
+
browser_set = "brave"
|
|
1139
|
+
sb_config._browser_shortcut = "brave"
|
|
1140
|
+
sb_config._cdp_browser = "brave"
|
|
1141
|
+
sb_config._cdp_bin_loc = bin_loc
|
|
1142
|
+
browser_list.append("--browser=brave")
|
|
1143
|
+
if "--browser=comet" in sys_argv or "--browser comet" in sys_argv:
|
|
1144
|
+
if not bin_loc_in_options:
|
|
1145
|
+
bin_loc = detect_b_ver.get_binary_location("comet")
|
|
1146
|
+
if os.path.exists(bin_loc):
|
|
1147
|
+
browser_changes += 1
|
|
1148
|
+
browser_set = "comet"
|
|
1149
|
+
sb_config._browser_shortcut = "comet"
|
|
1150
|
+
sb_config._cdp_browser = "comet"
|
|
1151
|
+
sb_config._cdp_bin_loc = bin_loc
|
|
1152
|
+
browser_list.append("--browser=comet")
|
|
1153
|
+
if "--browser=atlas" in sys_argv or "--browser atlas" in sys_argv:
|
|
1154
|
+
if not bin_loc_in_options:
|
|
1155
|
+
bin_loc = detect_b_ver.get_binary_location("atlas")
|
|
1156
|
+
if os.path.exists(bin_loc):
|
|
1157
|
+
browser_changes += 1
|
|
1158
|
+
browser_set = "atlas"
|
|
1159
|
+
sb_config._browser_shortcut = "atlas"
|
|
1160
|
+
sb_config._cdp_browser = "atlas"
|
|
1161
|
+
sb_config._cdp_bin_loc = bin_loc
|
|
1162
|
+
browser_list.append("--browser=atlas")
|
|
1084
1163
|
browser_text = browser_set
|
|
1085
1164
|
if "--chrome" in sys_argv and not browser_set == "chrome":
|
|
1086
1165
|
browser_changes += 1
|
|
@@ -1107,6 +1186,46 @@ class SeleniumBrowser(Plugin):
|
|
|
1107
1186
|
browser_text = "safari"
|
|
1108
1187
|
sb_config._browser_shortcut = "safari"
|
|
1109
1188
|
browser_list.append("--safari")
|
|
1189
|
+
if "--opera" in sys_argv and not browser_set == "opera":
|
|
1190
|
+
if not bin_loc_in_options:
|
|
1191
|
+
bin_loc = detect_b_ver.get_binary_location("opera")
|
|
1192
|
+
if os.path.exists(bin_loc):
|
|
1193
|
+
browser_changes += 1
|
|
1194
|
+
browser_text = "opera"
|
|
1195
|
+
sb_config._browser_shortcut = "opera"
|
|
1196
|
+
sb_config._cdp_browser = "opera"
|
|
1197
|
+
sb_config._cdp_bin_loc = bin_loc
|
|
1198
|
+
browser_list.append("--opera")
|
|
1199
|
+
if "--brave" in sys_argv and not browser_set == "brave":
|
|
1200
|
+
if not bin_loc_in_options:
|
|
1201
|
+
bin_loc = detect_b_ver.get_binary_location("brave")
|
|
1202
|
+
if os.path.exists(bin_loc):
|
|
1203
|
+
browser_changes += 1
|
|
1204
|
+
browser_text = "brave"
|
|
1205
|
+
sb_config._browser_shortcut = "brave"
|
|
1206
|
+
sb_config._cdp_browser = "brave"
|
|
1207
|
+
sb_config._cdp_bin_loc = bin_loc
|
|
1208
|
+
browser_list.append("--brave")
|
|
1209
|
+
if "--comet" in sys_argv and not browser_set == "comet":
|
|
1210
|
+
if not bin_loc_in_options:
|
|
1211
|
+
bin_loc = detect_b_ver.get_binary_location("comet")
|
|
1212
|
+
if os.path.exists(bin_loc):
|
|
1213
|
+
browser_changes += 1
|
|
1214
|
+
browser_text = "comet"
|
|
1215
|
+
sb_config._browser_shortcut = "comet"
|
|
1216
|
+
sb_config._cdp_browser = "comet"
|
|
1217
|
+
sb_config._cdp_bin_loc = bin_loc
|
|
1218
|
+
browser_list.append("--comet")
|
|
1219
|
+
if "--atlas" in sys_argv and not browser_set == "atlas":
|
|
1220
|
+
if not bin_loc_in_options:
|
|
1221
|
+
bin_loc = detect_b_ver.get_binary_location("atlas")
|
|
1222
|
+
if os.path.exists(bin_loc):
|
|
1223
|
+
browser_changes += 1
|
|
1224
|
+
browser_text = "atlas"
|
|
1225
|
+
sb_config._browser_shortcut = "atlas"
|
|
1226
|
+
sb_config._cdp_browser = "atlas"
|
|
1227
|
+
sb_config._cdp_bin_loc = bin_loc
|
|
1228
|
+
browser_list.append("--atlas")
|
|
1110
1229
|
if browser_changes > 1:
|
|
1111
1230
|
message = "\n\n TOO MANY browser types were entered!"
|
|
1112
1231
|
message += "\n There were %s found:\n > %s" % (
|
|
@@ -1183,6 +1302,8 @@ class SeleniumBrowser(Plugin):
|
|
|
1183
1302
|
if sb_config._browser_shortcut:
|
|
1184
1303
|
self.options.browser = sb_config._browser_shortcut
|
|
1185
1304
|
test.test.browser = sb_config._browser_shortcut
|
|
1305
|
+
if test.test.browser in constants.ChromiumSubs.chromium_subs:
|
|
1306
|
+
test.test.browser = "chrome" # Still uses chromedriver
|
|
1186
1307
|
test.test.cap_file = self.options.cap_file
|
|
1187
1308
|
test.test.cap_string = self.options.cap_string
|
|
1188
1309
|
test.test.headless = self.options.headless
|
|
@@ -1219,6 +1340,8 @@ class SeleniumBrowser(Plugin):
|
|
|
1219
1340
|
test.test.extension_dir = self.options.extension_dir
|
|
1220
1341
|
test.test.disable_features = self.options.disable_features
|
|
1221
1342
|
test.test.binary_location = self.options.binary_location
|
|
1343
|
+
if hasattr(sb_config, "_cdp_bin_loc") and sb_config._cdp_bin_loc:
|
|
1344
|
+
test.test.binary_location = sb_config._cdp_bin_loc
|
|
1222
1345
|
if self.options.use_cft and not test.test.binary_location:
|
|
1223
1346
|
test.test.binary_location = "cft"
|
|
1224
1347
|
elif self.options.use_chs and not test.test.binary_location:
|
|
@@ -593,6 +593,20 @@ async def start(
|
|
|
593
593
|
browser_binary = detect_b_ver.get_binary_location(browser)
|
|
594
594
|
if browser_binary and os.path.exists(browser_binary):
|
|
595
595
|
browser_executable_path = browser_binary
|
|
596
|
+
else:
|
|
597
|
+
bin_loc = str(browser_executable_path).lower()
|
|
598
|
+
if bin_loc.endswith("opera") or bin_loc.endswith("opera.exe"):
|
|
599
|
+
sb_config._cdp_browser = "opera"
|
|
600
|
+
elif bin_loc.endswith("edge") or bin_loc.endswith("edge.exe"):
|
|
601
|
+
sb_config._cdp_browser = "edge"
|
|
602
|
+
elif bin_loc.endswith("brave") or bin_loc.endswith("brave.exe"):
|
|
603
|
+
sb_config._cdp_browser = "brave"
|
|
604
|
+
elif bin_loc.endswith("comet") or bin_loc.endswith("comet.exe"):
|
|
605
|
+
sb_config._cdp_browser = "comet"
|
|
606
|
+
elif bin_loc.endswith("atlas") or bin_loc.endswith("atlas.exe"):
|
|
607
|
+
sb_config._cdp_browser = "atlas"
|
|
608
|
+
else:
|
|
609
|
+
sb_config._cdp_browser = "chrome"
|
|
596
610
|
if not config:
|
|
597
611
|
config = Config(
|
|
598
612
|
user_data_dir,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: seleniumbase
|
|
3
|
-
Version: 4.43.
|
|
3
|
+
Version: 4.43.3
|
|
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
|
|
@@ -871,6 +871,10 @@ pytest test_coffee_cart.py --trace
|
|
|
871
871
|
--edge # (Shortcut for "--browser=edge".)
|
|
872
872
|
--firefox # (Shortcut for "--browser=firefox".)
|
|
873
873
|
--safari # (Shortcut for "--browser=safari".)
|
|
874
|
+
--opera # (Shortcut for "--browser=opera".)
|
|
875
|
+
--brave # (Shortcut for "--browser=brave".)
|
|
876
|
+
--comet # (Shortcut for "--browser=comet".)
|
|
877
|
+
--atlas # (Shortcut for "--browser=atlas".)
|
|
874
878
|
--settings-file=FILE # (Override default SeleniumBase settings.)
|
|
875
879
|
--env=ENV # (Set the test env. Access with "self.env" in tests.)
|
|
876
880
|
--account=STR # (Set account. Access with "self.account" in tests.)
|
|
@@ -3,7 +3,7 @@ sbase/__main__.py,sha256=G0bVB1-DM4PGwQ1KyOupaWCs4ePbChZNNWuX2htim5U,647
|
|
|
3
3
|
sbase/steps.py,sha256=wiPSWZhFpBlWvkqXRJ18btpBu3nQaw9K5AzIJNAX5RM,43521
|
|
4
4
|
seleniumbase/__init__.py,sha256=JFEY9P5QJqsa1M6ghzLMH2eIPQyh85iglCaQwg8Y8z4,2498
|
|
5
5
|
seleniumbase/__main__.py,sha256=dn1p6dgCchmcH1zzTzzQvFwwdQQqnTGH6ULV9m4hv24,654
|
|
6
|
-
seleniumbase/__version__.py,sha256=
|
|
6
|
+
seleniumbase/__version__.py,sha256=9cDyvBSzC_bfVjqEGyGEi6MIO0NgsOhbKabZPIUihyE,46
|
|
7
7
|
seleniumbase/behave/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
8
8
|
seleniumbase/behave/behave_helper.py,sha256=lJtagtivSbEpbRj0EKV4l4PuPU6NANONJJAnYwgVCe0,24379
|
|
9
9
|
seleniumbase/behave/behave_sb.py,sha256=dEj9UUHVz3ejzEX25frViPQfp7acjI-UssWJO_wpugg,59875
|
|
@@ -36,11 +36,11 @@ seleniumbase/console_scripts/sb_print.py,sha256=iUKR71Y82NhuKBKw31PJilDw-pPUr-vq
|
|
|
36
36
|
seleniumbase/console_scripts/sb_recorder.py,sha256=DH-n2fN7N9qyHMl7wjtn8MiliBgfw-1kwgmfg1GUuhk,10772
|
|
37
37
|
seleniumbase/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
38
38
|
seleniumbase/core/application_manager.py,sha256=e_0sjtI8cjY5BNyZj1QBR0j6_oCScxGmSXYEpcYwuZE,576
|
|
39
|
-
seleniumbase/core/browser_launcher.py,sha256=
|
|
39
|
+
seleniumbase/core/browser_launcher.py,sha256=NWLi2Yr1Rk9vnaJ1-92cKvdwgjNny05VFs3i0R75z24,254523
|
|
40
40
|
seleniumbase/core/capabilities_parser.py,sha256=meIS2uHapTCq2ldfNAToC7r0cKmZDRXuYNKExM1GHDY,6038
|
|
41
41
|
seleniumbase/core/colored_traceback.py,sha256=DrRWfg7XEnKcgY59Xj7Jdk09H-XqHYBSUpB-DiZt6iY,2020
|
|
42
42
|
seleniumbase/core/create_db_tables.sql,sha256=VWPtrdiW_HQ6yETHjqTu-VIrTwvd8I8o1NfBeaVSHpU,972
|
|
43
|
-
seleniumbase/core/detect_b_ver.py,sha256=
|
|
43
|
+
seleniumbase/core/detect_b_ver.py,sha256=kSm7I2GIJT5uNLbmxRIr7M0ADQsTo9oyC_QmuS0IdMU,21644
|
|
44
44
|
seleniumbase/core/download_helper.py,sha256=qSR54kQISucF4RQaLCOuuerSu6DR41juGi_30HVvWYY,2943
|
|
45
45
|
seleniumbase/core/encoded_images.py,sha256=rDKJ4cNJSuKiRcFViYU7bjyTS9_moI57gUPRXVg3u2k,14209
|
|
46
46
|
seleniumbase/core/jqc_helper.py,sha256=2DDQr9Q2jSSZqFzX588jLlUM9oJvyrRWq2aORSIPUdI,10322
|
|
@@ -50,7 +50,7 @@ seleniumbase/core/proxy_helper.py,sha256=pZ1NboNfziHU3vWZLOZLX-qkfM3oKSnpc3omQf9
|
|
|
50
50
|
seleniumbase/core/recorder_helper.py,sha256=gDION28OK4NAYsE-7ohKZ9Z3sxQQ0FEjf859LDpqsg4,25320
|
|
51
51
|
seleniumbase/core/report_helper.py,sha256=Obg5wHltEmM6uFCWFeR8_fjeT0GzHjGgoqQIr_HUxxk,12223
|
|
52
52
|
seleniumbase/core/s3_manager.py,sha256=z_4qx2jI_gtK5r3niGXgEOBpfMUicUCOciowai50MP4,3529
|
|
53
|
-
seleniumbase/core/sb_cdp.py,sha256=
|
|
53
|
+
seleniumbase/core/sb_cdp.py,sha256=B55mkFUCtMxeiAcUMa9N0Gzucr0Mv4_VLxWVyNv9vxg,109378
|
|
54
54
|
seleniumbase/core/sb_driver.py,sha256=-IQsskc7HpXQbcBL04IPjmGpyYchyo7v9OPF2WcahDw,14159
|
|
55
55
|
seleniumbase/core/session_helper.py,sha256=s9zD3PVZEWVzG2h81cCUskbNWLfdjC_LwwQjKptHCak,558
|
|
56
56
|
seleniumbase/core/settings_parser.py,sha256=gqVohHVlE_5L5Cqe2L24uYrRzvoK-saX8E_Df7_-_3I,7609
|
|
@@ -59,8 +59,12 @@ seleniumbase/core/testcase_manager.py,sha256=TblCfo8Zfap1Bayip-qTu9gqT-KALSwXAX4
|
|
|
59
59
|
seleniumbase/core/tour_helper.py,sha256=GcNHetXiM8D2Z0-TLEF-LlBaPHADdT-n2HNlft9Sup0,42535
|
|
60
60
|
seleniumbase/core/visual_helper.py,sha256=HxPOulfEebc9ZSwe7E-nSQJ12N2l4vhqUQubLvE2QQw,3227
|
|
61
61
|
seleniumbase/drivers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
62
|
+
seleniumbase/drivers/atlas_drivers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
63
|
+
seleniumbase/drivers/brave_drivers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
62
64
|
seleniumbase/drivers/cft_drivers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
63
65
|
seleniumbase/drivers/chs_drivers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
66
|
+
seleniumbase/drivers/comet_drivers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
67
|
+
seleniumbase/drivers/opera_drivers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
64
68
|
seleniumbase/extensions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
65
69
|
seleniumbase/extensions/ad_block.zip,sha256=LTlaOYUs6a1Zu4op64pLoDEqYKJb8zHq_Y0PsBIIqCk,1454
|
|
66
70
|
seleniumbase/extensions/disable_csp.zip,sha256=5RvomXnm2PdivUVcxTV6jfvD8WhTEsQYHaQZe7nk9Yc,20014
|
|
@@ -68,10 +72,10 @@ seleniumbase/extensions/recorder.zip,sha256=JEE_FVEvlS63cFQbVLEroIyPSS91nWCDL0Mh
|
|
|
68
72
|
seleniumbase/extensions/sbase_ext.zip,sha256=3s1N8zrVaMz8RQEOIoBzC3KDjtmHwVZRvVsX25Odr_s,8175
|
|
69
73
|
seleniumbase/fixtures/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
70
74
|
seleniumbase/fixtures/base_case.py,sha256=NbQNMpYCLDNLz3OMBh8eKRu0SHhAKD1Kvci-ZrvZbEw,741284
|
|
71
|
-
seleniumbase/fixtures/constants.py,sha256=
|
|
75
|
+
seleniumbase/fixtures/constants.py,sha256=zI6zEaWUNXaapeWP2kYvV_ubTI854tSV_iDpVmF7pR4,14351
|
|
72
76
|
seleniumbase/fixtures/css_to_xpath.py,sha256=9ouDB1xl4MJ2os6JOgTIAyHKOQfuxtxvXC3O5hSnEKA,1954
|
|
73
77
|
seleniumbase/fixtures/errors.py,sha256=KyxuEVx_e3MPhVrJfNIa_3ltMpbCFxfy_jxK8RFNTns,555
|
|
74
|
-
seleniumbase/fixtures/js_utils.py,sha256=
|
|
78
|
+
seleniumbase/fixtures/js_utils.py,sha256=iNMn4soCRIuyjYG0vUHZX5zWEKSR8RgGDsl9Y74DFP8,52843
|
|
75
79
|
seleniumbase/fixtures/page_actions.py,sha256=QV5VPNoa8djy7CpThtqk5c2rKBqNPscFJRIpaLE_3no,73192
|
|
76
80
|
seleniumbase/fixtures/page_utils.py,sha256=auaUAuV2ctRNPUnGWuHS22Il0Ml0PPHmxtikVZdM2tc,12277
|
|
77
81
|
seleniumbase/fixtures/shared_utils.py,sha256=kn0rcF0tEkQkiT8RGVooNFsLnVWmdPeTH9PfIm86TOI,10527
|
|
@@ -88,13 +92,13 @@ seleniumbase/plugins/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hS
|
|
|
88
92
|
seleniumbase/plugins/base_plugin.py,sha256=ItLgtaZmu_363iycy8BNX0Do5LyIWGiTMLW6krXM-WQ,14748
|
|
89
93
|
seleniumbase/plugins/basic_test_info.py,sha256=nvQxLMxD4pgjY3dGHlMAxmHXP0LIhcOIfWjNue-49uk,2108
|
|
90
94
|
seleniumbase/plugins/db_reporting_plugin.py,sha256=En09qUCoojrk9-vbcnsoHdSELoGmag2GDIyu3jTiJas,7331
|
|
91
|
-
seleniumbase/plugins/driver_manager.py,sha256=
|
|
95
|
+
seleniumbase/plugins/driver_manager.py,sha256=NtnnCme2x5ZZT60w9EgZPZspBpO1tnoRBo_BMWN5Jrw,41775
|
|
92
96
|
seleniumbase/plugins/page_source.py,sha256=mifv7Rkkb9qcrFY2H-9fctoR1CpHHiCgnFTOY2p7mBY,1889
|
|
93
|
-
seleniumbase/plugins/pytest_plugin.py,sha256=
|
|
97
|
+
seleniumbase/plugins/pytest_plugin.py,sha256=st3Vo57NUhik6G4JB8SUU8xcdjFARP0NY5PXWb_Tf4o,114451
|
|
94
98
|
seleniumbase/plugins/s3_logging_plugin.py,sha256=WDfertQgGOW_SRJpFMaekYD6vBVW9VO62POtXXy2HCM,2319
|
|
95
|
-
seleniumbase/plugins/sb_manager.py,sha256=
|
|
99
|
+
seleniumbase/plugins/sb_manager.py,sha256=zWCXCU594mL0FsQ9ZHb8sPkF3Ij6rKp2LDiFtTmjbE8,63405
|
|
96
100
|
seleniumbase/plugins/screen_shots.py,sha256=1hrXw-hzuZ1BR6Yh7AyWX2ABnvnP73-RCbwdz958gj4,1127
|
|
97
|
-
seleniumbase/plugins/selenium_plugin.py,sha256=
|
|
101
|
+
seleniumbase/plugins/selenium_plugin.py,sha256=kL4avmksBmGh9n-PtfmEMei9Z8yr2vhoOCQgAsYcUDg,65990
|
|
98
102
|
seleniumbase/resources/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
99
103
|
seleniumbase/translate/__init__.py,sha256=N2i5XntTwJZmwr9-qvdX5gC6Rdm5-ClIbnQ8yyPn4Oo,459
|
|
100
104
|
seleniumbase/translate/chinese.py,sha256=0QhK2eadtsdN4KCvwki1J7jBCe8I4xxWbKzteJKJozY,24698
|
|
@@ -118,7 +122,7 @@ seleniumbase/undetected/webelement.py,sha256=OOpUYbEiOG52KsYYyuDW9tYLdA2SMnukvwQ
|
|
|
118
122
|
seleniumbase/undetected/cdp_driver/__init__.py,sha256=Ga9alwuaZZy4_XOShc0HjgFnNqpPdrcbjAicz5gE7a4,215
|
|
119
123
|
seleniumbase/undetected/cdp_driver/_contradict.py,sha256=lP4b0h5quAy573ETn_TBbYV889cL1AuPLVInpJ0ZkiU,3183
|
|
120
124
|
seleniumbase/undetected/cdp_driver/browser.py,sha256=AQI6uWVyhv7VEnx0CE3V9MeoUa-VDilFPytnQile31Y,35651
|
|
121
|
-
seleniumbase/undetected/cdp_driver/cdp_util.py,sha256=
|
|
125
|
+
seleniumbase/undetected/cdp_driver/cdp_util.py,sha256=wSgXxukwP4_-kVai0z1s1uoXYDiDab0jdBLa1HyW0nQ,34939
|
|
122
126
|
seleniumbase/undetected/cdp_driver/config.py,sha256=B5Wf0E5xvCmIuLO_Y06oyKYd04yM2auj--JyGKUKsls,13630
|
|
123
127
|
seleniumbase/undetected/cdp_driver/connection.py,sha256=FfGFXDyf_-JzvE2RRmT6Fi91I7Fsv8rLv91rPuX-6VY,25718
|
|
124
128
|
seleniumbase/undetected/cdp_driver/element.py,sha256=FIC6v7OmumLCT-_vIc3H4oju_oBbaLpWJUJIKm2c_q4,40467
|
|
@@ -137,9 +141,9 @@ seleniumbase/utilities/selenium_grid/start-grid-hub.bat,sha256=Ftq-GrAKRYH2ssDPr
|
|
|
137
141
|
seleniumbase/utilities/selenium_grid/start-grid-hub.sh,sha256=KADv0RUHONLL2_I443QFK8PryBpDmKn5Gy0s4o0vDSM,106
|
|
138
142
|
seleniumbase/utilities/selenium_ide/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
139
143
|
seleniumbase/utilities/selenium_ide/convert_ide.py,sha256=2tayFP_R9HGH0Xx6qYlPmArN0THntO6R0Wjo0qqgCZY,31680
|
|
140
|
-
seleniumbase-4.43.
|
|
141
|
-
seleniumbase-4.43.
|
|
142
|
-
seleniumbase-4.43.
|
|
143
|
-
seleniumbase-4.43.
|
|
144
|
-
seleniumbase-4.43.
|
|
145
|
-
seleniumbase-4.43.
|
|
144
|
+
seleniumbase-4.43.3.dist-info/licenses/LICENSE,sha256=BRblZsX7HyPUjQmYTiyWr_e9tzWvmR3R4SFclM2R3W0,1085
|
|
145
|
+
seleniumbase-4.43.3.dist-info/METADATA,sha256=lvVpfGbWU7AtfcUFvhZMHQ-1pgtsnf1MDb6olvxwtHE,90492
|
|
146
|
+
seleniumbase-4.43.3.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
147
|
+
seleniumbase-4.43.3.dist-info/entry_points.txt,sha256=CNrh2EKNaHYEhO6pP1RJyVLB99LkDDYX7TnUK8xfjqk,623
|
|
148
|
+
seleniumbase-4.43.3.dist-info/top_level.txt,sha256=4N97aBOQ8ETCnDnokBsWb07lJfTaq3C1ZzYRxvLMxqU,19
|
|
149
|
+
seleniumbase-4.43.3.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|