seleniumbase 4.44.15__tar.gz → 4.45.1__tar.gz
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-4.44.15/seleniumbase.egg-info → seleniumbase-4.45.1}/PKG-INFO +51 -78
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/README.md +8 -9
- seleniumbase-4.45.1/requirements.txt +84 -0
- seleniumbase-4.45.1/seleniumbase/__version__.py +2 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/console_scripts/sb_install.py +6 -10
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/console_scripts/sb_mkrec.py +20 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/console_scripts/sb_recorder.py +38 -3
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/core/browser_launcher.py +63 -55
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/core/log_helper.py +9 -14
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/core/mysql.py +1 -1
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/core/report_helper.py +2 -6
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/core/sb_cdp.py +139 -14
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/core/session_helper.py +2 -4
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/fixtures/base_case.py +111 -140
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/fixtures/js_utils.py +47 -10
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/fixtures/page_actions.py +7 -19
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/fixtures/page_utils.py +4 -2
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/fixtures/shared_utils.py +2 -4
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/plugins/pytest_plugin.py +19 -39
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/plugins/selenium_plugin.py +5 -10
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/undetected/__init__.py +11 -10
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/undetected/cdp_driver/browser.py +81 -34
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/undetected/cdp_driver/cdp_util.py +14 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/undetected/cdp_driver/config.py +6 -7
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/undetected/cdp_driver/tab.py +367 -16
- {seleniumbase-4.44.15 → seleniumbase-4.45.1/seleniumbase.egg-info}/PKG-INFO +51 -78
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase.egg-info/requires.txt +39 -87
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/setup.py +56 -79
- seleniumbase-4.44.15/requirements.txt +0 -105
- seleniumbase-4.44.15/seleniumbase/__version__.py +0 -2
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/.gitignore +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/LICENSE +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/MANIFEST.in +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/install.sh +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/pyproject.toml +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/pytest.ini +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/sbase/__init__.py +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/sbase/__main__.py +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/sbase/steps.py +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/__init__.py +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/__main__.py +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/behave/__init__.py +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/behave/behave_helper.py +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/behave/behave_sb.py +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/behave/steps.py +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/common/__init__.py +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/common/decorators.py +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/common/encryption.py +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/common/exceptions.py +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/common/obfuscate.py +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/common/unobfuscate.py +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/config/__init__.py +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/config/ad_block_list.py +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/config/proxy_list.py +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/config/settings.py +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/console_scripts/__init__.py +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/console_scripts/logo_helper.py +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/console_scripts/rich_helper.py +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/console_scripts/run.py +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/console_scripts/sb_behave_gui.py +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/console_scripts/sb_caseplans.py +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/console_scripts/sb_commander.py +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/console_scripts/sb_mkchart.py +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/console_scripts/sb_mkdir.py +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/console_scripts/sb_mkfile.py +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/console_scripts/sb_mkpres.py +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/console_scripts/sb_objectify.py +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/console_scripts/sb_print.py +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/core/__init__.py +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/core/application_manager.py +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/core/capabilities_parser.py +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/core/colored_traceback.py +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/core/create_db_tables.sql +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/core/detect_b_ver.py +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/core/download_helper.py +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/core/encoded_images.py +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/core/jqc_helper.py +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/core/proxy_helper.py +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/core/recorder_helper.py +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/core/s3_manager.py +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/core/sb_driver.py +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/core/settings_parser.py +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/core/style_sheet.py +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/core/testcase_manager.py +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/core/tour_helper.py +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/core/visual_helper.py +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/drivers/__init__.py +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/drivers/atlas_drivers/__init__.py +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/drivers/brave_drivers/__init__.py +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/drivers/cft_drivers/__init__.py +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/drivers/chs_drivers/__init__.py +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/drivers/comet_drivers/__init__.py +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/drivers/opera_drivers/__init__.py +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/extensions/__init__.py +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/extensions/ad_block.zip +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/extensions/disable_csp.zip +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/extensions/recorder.zip +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/extensions/sbase_ext.zip +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/fixtures/__init__.py +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/fixtures/constants.py +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/fixtures/css_to_xpath.py +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/fixtures/errors.py +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/fixtures/unittest_helper.py +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/fixtures/words.py +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/fixtures/xpath_to_css.py +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/js_code/__init__.py +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/js_code/active_css_js.py +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/js_code/live_js.py +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/js_code/recorder_js.py +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/masterqa/__init__.py +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/masterqa/master_qa.py +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/plugins/__init__.py +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/plugins/base_plugin.py +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/plugins/basic_test_info.py +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/plugins/db_reporting_plugin.py +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/plugins/driver_manager.py +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/plugins/page_source.py +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/plugins/s3_logging_plugin.py +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/plugins/sb_manager.py +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/plugins/screen_shots.py +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/resources/__init__.py +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/translate/__init__.py +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/translate/chinese.py +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/translate/dutch.py +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/translate/french.py +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/translate/italian.py +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/translate/japanese.py +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/translate/korean.py +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/translate/master_dict.py +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/translate/portuguese.py +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/translate/russian.py +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/translate/spanish.py +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/translate/translator.py +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/undetected/cdp.py +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/undetected/cdp_driver/__init__.py +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/undetected/cdp_driver/_contradict.py +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/undetected/cdp_driver/connection.py +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/undetected/cdp_driver/element.py +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/undetected/dprocess.py +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/undetected/options.py +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/undetected/patcher.py +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/undetected/reactor.py +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/undetected/webelement.py +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/utilities/__init__.py +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/utilities/selenium_grid/__init__.py +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/utilities/selenium_grid/download_selenium_server.py +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/utilities/selenium_grid/font_color +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/utilities/selenium_grid/grid-hub +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/utilities/selenium_grid/grid-node +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/utilities/selenium_grid/grid_hub.py +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/utilities/selenium_grid/grid_node.py +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/utilities/selenium_grid/register-grid-node.bat +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/utilities/selenium_grid/register-grid-node.sh +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/utilities/selenium_grid/start-grid-hub.bat +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/utilities/selenium_grid/start-grid-hub.sh +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/utilities/selenium_ide/__init__.py +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/utilities/selenium_ide/convert_ide.py +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase.egg-info/SOURCES.txt +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase.egg-info/dependency_links.txt +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase.egg-info/entry_points.txt +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase.egg-info/top_level.txt +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/setup.cfg +0 -0
- {seleniumbase-4.44.15 → seleniumbase-4.45.1}/virtualenv_install.sh +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: seleniumbase
|
|
3
|
-
Version: 4.
|
|
3
|
+
Version: 4.45.1
|
|
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
|
|
@@ -33,7 +33,6 @@ Classifier: Operating System :: Microsoft :: Windows
|
|
|
33
33
|
Classifier: Operating System :: POSIX :: Linux
|
|
34
34
|
Classifier: Programming Language :: Python
|
|
35
35
|
Classifier: Programming Language :: Python :: 3
|
|
36
|
-
Classifier: Programming Language :: Python :: 3.8
|
|
37
36
|
Classifier: Programming Language :: Python :: 3.9
|
|
38
37
|
Classifier: Programming Language :: Python :: 3.10
|
|
39
38
|
Classifier: Programming Language :: Python :: 3.11
|
|
@@ -56,35 +55,28 @@ Classifier: Topic :: Software Development :: Testing
|
|
|
56
55
|
Classifier: Topic :: Software Development :: Testing :: Acceptance
|
|
57
56
|
Classifier: Topic :: Software Development :: Testing :: Traffic Generation
|
|
58
57
|
Classifier: Topic :: Utilities
|
|
59
|
-
Requires-Python: >=3.
|
|
58
|
+
Requires-Python: >=3.9
|
|
60
59
|
Description-Content-Type: text/markdown
|
|
61
60
|
License-File: LICENSE
|
|
62
|
-
Requires-Dist: pip>=25.
|
|
63
|
-
Requires-Dist: pip>=25.3; python_version >= "3.9"
|
|
61
|
+
Requires-Dist: pip>=25.3
|
|
64
62
|
Requires-Dist: packaging>=25.0
|
|
65
63
|
Requires-Dist: setuptools~=70.2; python_version < "3.10"
|
|
66
64
|
Requires-Dist: setuptools>=80.9.0; python_version >= "3.10"
|
|
67
65
|
Requires-Dist: wheel>=0.45.1
|
|
68
|
-
Requires-Dist: attrs
|
|
69
|
-
Requires-Dist: attrs>=25.4.0; python_version >= "3.9"
|
|
66
|
+
Requires-Dist: attrs>=25.4.0
|
|
70
67
|
Requires-Dist: certifi>=2025.11.12
|
|
71
|
-
Requires-Dist: exceptiongroup>=1.3.
|
|
72
|
-
Requires-Dist: websockets
|
|
73
|
-
Requires-Dist:
|
|
74
|
-
Requires-Dist: filelock~=3.16.1; python_version < "3.9"
|
|
75
|
-
Requires-Dist: filelock~=3.19.1; python_version >= "3.9" and python_version < "3.10"
|
|
68
|
+
Requires-Dist: exceptiongroup>=1.3.1
|
|
69
|
+
Requires-Dist: websockets>=15.0.1
|
|
70
|
+
Requires-Dist: filelock~=3.19.1; python_version < "3.10"
|
|
76
71
|
Requires-Dist: filelock>=3.20.0; python_version >= "3.10"
|
|
77
72
|
Requires-Dist: fasteners>=0.20
|
|
78
|
-
Requires-Dist: mycdp>=1.3.
|
|
73
|
+
Requires-Dist: mycdp>=1.3.2
|
|
79
74
|
Requires-Dist: pynose>=1.5.5
|
|
80
|
-
Requires-Dist: platformdirs~=4.
|
|
81
|
-
Requires-Dist: platformdirs
|
|
82
|
-
Requires-Dist:
|
|
83
|
-
Requires-Dist: typing-extensions~=4.13.2; python_version < "3.9"
|
|
84
|
-
Requires-Dist: typing-extensions>=4.15.0; python_version >= "3.9"
|
|
75
|
+
Requires-Dist: platformdirs~=4.4.0; python_version < "3.10"
|
|
76
|
+
Requires-Dist: platformdirs>=4.5.1; python_version >= "3.10"
|
|
77
|
+
Requires-Dist: typing-extensions>=4.15.0
|
|
85
78
|
Requires-Dist: sbvirtualdisplay>=1.4.0
|
|
86
|
-
Requires-Dist: MarkupSafe
|
|
87
|
-
Requires-Dist: MarkupSafe>=3.0.3; python_version >= "3.9"
|
|
79
|
+
Requires-Dist: MarkupSafe>=3.0.3
|
|
88
80
|
Requires-Dist: Jinja2>=3.1.6
|
|
89
81
|
Requires-Dist: six>=1.17.0
|
|
90
82
|
Requires-Dist: parse>=1.20.2
|
|
@@ -99,48 +91,39 @@ Requires-Dist: idna>=3.11
|
|
|
99
91
|
Requires-Dist: chardet==5.2.0
|
|
100
92
|
Requires-Dist: charset-normalizer<4,>=3.4.4
|
|
101
93
|
Requires-Dist: urllib3<2,>=1.26.20; python_version < "3.10"
|
|
102
|
-
Requires-Dist: urllib3<
|
|
103
|
-
Requires-Dist: requests
|
|
104
|
-
Requires-Dist: requests~=2.32.5; python_version >= "3.9"
|
|
94
|
+
Requires-Dist: urllib3<3,>=1.26.20; python_version >= "3.10"
|
|
95
|
+
Requires-Dist: requests~=2.32.5
|
|
105
96
|
Requires-Dist: sniffio==1.3.1
|
|
106
97
|
Requires-Dist: h11==0.16.0
|
|
107
98
|
Requires-Dist: outcome==1.3.0.post0
|
|
108
|
-
Requires-Dist: trio
|
|
109
|
-
Requires-Dist: trio<1,>=0.31.0; python_version >= "3.9" and python_version < "3.10"
|
|
99
|
+
Requires-Dist: trio<1,>=0.31.0; python_version < "3.10"
|
|
110
100
|
Requires-Dist: trio<1,>=0.32.0; python_version >= "3.10"
|
|
111
101
|
Requires-Dist: trio-websocket~=0.12.2
|
|
112
102
|
Requires-Dist: wsproto==1.2.0; python_version < "3.10"
|
|
113
|
-
Requires-Dist: wsproto
|
|
114
|
-
Requires-Dist: websocket-client~=1.
|
|
115
|
-
Requires-Dist:
|
|
116
|
-
Requires-Dist: selenium==4.
|
|
117
|
-
Requires-Dist:
|
|
118
|
-
Requires-Dist:
|
|
119
|
-
Requires-Dist: cssselect==1.2.0; python_version < "3.9"
|
|
120
|
-
Requires-Dist: cssselect==1.3.0; python_version >= "3.9"
|
|
103
|
+
Requires-Dist: wsproto~=1.3.2; python_version >= "3.10"
|
|
104
|
+
Requires-Dist: websocket-client~=1.9.0
|
|
105
|
+
Requires-Dist: selenium==4.32.0; python_version < "3.10"
|
|
106
|
+
Requires-Dist: selenium==4.39.0; python_version >= "3.10"
|
|
107
|
+
Requires-Dist: cssselect==1.3.0
|
|
108
|
+
Requires-Dist: nest-asyncio==1.6.0
|
|
121
109
|
Requires-Dist: sortedcontainers==2.4.0
|
|
122
110
|
Requires-Dist: execnet==2.1.1; python_version < "3.10"
|
|
123
111
|
Requires-Dist: execnet==2.1.2; python_version >= "3.10"
|
|
124
112
|
Requires-Dist: iniconfig==2.1.0; python_version < "3.10"
|
|
125
113
|
Requires-Dist: iniconfig==2.3.0; python_version >= "3.10"
|
|
126
|
-
Requires-Dist: pluggy==1.
|
|
127
|
-
Requires-Dist:
|
|
128
|
-
Requires-Dist: pytest==
|
|
129
|
-
Requires-Dist: pytest==8.4.2; python_version >= "3.9" and python_version < "3.11"
|
|
130
|
-
Requires-Dist: pytest==9.0.1; python_version >= "3.11"
|
|
114
|
+
Requires-Dist: pluggy==1.6.0
|
|
115
|
+
Requires-Dist: pytest==8.4.2; python_version < "3.11"
|
|
116
|
+
Requires-Dist: pytest==9.0.2; python_version >= "3.11"
|
|
131
117
|
Requires-Dist: pytest-html==4.0.2
|
|
132
118
|
Requires-Dist: pytest-metadata==3.1.1
|
|
133
119
|
Requires-Dist: pytest-ordering==0.6
|
|
134
|
-
Requires-Dist: pytest-rerunfailures==
|
|
135
|
-
Requires-Dist: pytest-rerunfailures==16.0.1; python_version >= "3.9" and python_version < "3.10"
|
|
120
|
+
Requires-Dist: pytest-rerunfailures==16.0.1; python_version < "3.10"
|
|
136
121
|
Requires-Dist: pytest-rerunfailures==16.1; python_version >= "3.10"
|
|
137
|
-
Requires-Dist: pytest-xdist==3.
|
|
138
|
-
Requires-Dist: pytest-xdist==3.8.0; python_version >= "3.9"
|
|
122
|
+
Requires-Dist: pytest-xdist==3.8.0
|
|
139
123
|
Requires-Dist: parameterized==0.9.0
|
|
140
124
|
Requires-Dist: behave==1.2.6
|
|
141
|
-
Requires-Dist: soupsieve
|
|
142
|
-
Requires-Dist:
|
|
143
|
-
Requires-Dist: beautifulsoup4~=4.14.2
|
|
125
|
+
Requires-Dist: soupsieve~=2.8
|
|
126
|
+
Requires-Dist: beautifulsoup4~=4.14.3
|
|
144
127
|
Requires-Dist: pyotp==2.9.0
|
|
145
128
|
Requires-Dist: python-xlib==0.33; platform_system == "Linux"
|
|
146
129
|
Requires-Dist: PyAutoGUI>=0.9.54; platform_system == "Linux"
|
|
@@ -153,44 +136,35 @@ Requires-Dist: allure-pytest>=2.13.5; extra == "allure"
|
|
|
153
136
|
Requires-Dist: allure-python-commons>=2.13.5; extra == "allure"
|
|
154
137
|
Requires-Dist: allure-behave>=2.13.5; extra == "allure"
|
|
155
138
|
Provides-Extra: coverage
|
|
156
|
-
Requires-Dist: coverage>=7.
|
|
157
|
-
Requires-Dist: coverage>=7.
|
|
158
|
-
Requires-Dist:
|
|
159
|
-
Requires-Dist: pytest-cov>=5.0.0; python_version < "3.9" and extra == "coverage"
|
|
160
|
-
Requires-Dist: pytest-cov>=7.0.0; python_version >= "3.9" and extra == "coverage"
|
|
139
|
+
Requires-Dist: coverage>=7.10.7; python_version < "3.10" and extra == "coverage"
|
|
140
|
+
Requires-Dist: coverage>=7.13.0; python_version >= "3.10" and extra == "coverage"
|
|
141
|
+
Requires-Dist: pytest-cov>=7.0.0; extra == "coverage"
|
|
161
142
|
Provides-Extra: flake8
|
|
162
|
-
Requires-Dist: flake8==
|
|
163
|
-
Requires-Dist: flake8==7.3.0; python_version >= "3.9" and extra == "flake8"
|
|
143
|
+
Requires-Dist: flake8==7.3.0; extra == "flake8"
|
|
164
144
|
Requires-Dist: mccabe==0.7.0; extra == "flake8"
|
|
165
|
-
Requires-Dist: pyflakes==
|
|
166
|
-
Requires-Dist:
|
|
167
|
-
Requires-Dist: pycodestyle==2.9.1; python_version < "3.9" and extra == "flake8"
|
|
168
|
-
Requires-Dist: pycodestyle==2.14.0; python_version >= "3.9" and extra == "flake8"
|
|
145
|
+
Requires-Dist: pyflakes==3.4.0; extra == "flake8"
|
|
146
|
+
Requires-Dist: pycodestyle==2.14.0; extra == "flake8"
|
|
169
147
|
Provides-Extra: ipdb
|
|
170
148
|
Requires-Dist: ipdb==0.13.13; extra == "ipdb"
|
|
171
149
|
Requires-Dist: ipython==7.34.0; extra == "ipdb"
|
|
172
150
|
Provides-Extra: mss
|
|
173
|
-
Requires-Dist: mss==
|
|
174
|
-
Requires-Dist: mss==10.0.0; python_version >= "3.9" and extra == "mss"
|
|
151
|
+
Requires-Dist: mss==10.1.0; extra == "mss"
|
|
175
152
|
Provides-Extra: pdfminer
|
|
176
|
-
Requires-Dist: pdfminer.six==
|
|
177
|
-
Requires-Dist:
|
|
178
|
-
Requires-Dist:
|
|
179
|
-
Requires-Dist:
|
|
180
|
-
Requires-Dist: cffi==1.17.1; python_version < "3.9" and extra == "pdfminer"
|
|
181
|
-
Requires-Dist: cffi==2.0.0; python_version >= "3.9" and extra == "pdfminer"
|
|
182
|
-
Requires-Dist: pycparser==2.22; python_version < "3.9" and extra == "pdfminer"
|
|
183
|
-
Requires-Dist: pycparser==2.23; python_version >= "3.9" and extra == "pdfminer"
|
|
153
|
+
Requires-Dist: pdfminer.six==20251107; extra == "pdfminer"
|
|
154
|
+
Requires-Dist: cryptography==46.0.3; extra == "pdfminer"
|
|
155
|
+
Requires-Dist: cffi==2.0.0; extra == "pdfminer"
|
|
156
|
+
Requires-Dist: pycparser==2.23; extra == "pdfminer"
|
|
184
157
|
Provides-Extra: pillow
|
|
185
|
-
Requires-Dist: Pillow>=
|
|
186
|
-
Requires-Dist: Pillow>=11.3.0; (python_version >= "3.9" and python_version < "3.10") and extra == "pillow"
|
|
158
|
+
Requires-Dist: Pillow>=11.3.0; python_version < "3.10" and extra == "pillow"
|
|
187
159
|
Requires-Dist: Pillow>=12.0.0; python_version >= "3.10" and extra == "pillow"
|
|
188
160
|
Provides-Extra: pip-system-certs
|
|
189
161
|
Requires-Dist: pip-system-certs==4.0; platform_system == "Windows" and extra == "pip-system-certs"
|
|
190
162
|
Provides-Extra: proxy
|
|
191
163
|
Requires-Dist: proxy.py==2.4.3; extra == "proxy"
|
|
164
|
+
Provides-Extra: playwright
|
|
165
|
+
Requires-Dist: playwright>=1.56.0; extra == "playwright"
|
|
192
166
|
Provides-Extra: psutil
|
|
193
|
-
Requires-Dist: psutil
|
|
167
|
+
Requires-Dist: psutil>=7.1.3; extra == "psutil"
|
|
194
168
|
Provides-Extra: pyautogui
|
|
195
169
|
Requires-Dist: PyAutoGUI>=0.9.54; platform_system != "Linux" and extra == "pyautogui"
|
|
196
170
|
Provides-Extra: selenium-stealth
|
|
@@ -247,11 +221,11 @@ Dynamic: summary
|
|
|
247
221
|
<a href="https://github.com/seleniumbase/SeleniumBase/blob/master/seleniumbase/console_scripts/ReadMe.md">🌠 Scripts</a> |
|
|
248
222
|
<a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/mobile_testing.md">📱 Mobile</a>
|
|
249
223
|
<br />
|
|
250
|
-
<a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/method_summary.md">📘
|
|
251
|
-
<a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/syntax_formats.md"> 🔠
|
|
224
|
+
<a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/method_summary.md">📘 API</a> |
|
|
225
|
+
<a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/syntax_formats.md"> 🔠 Syntaxes</a> |
|
|
252
226
|
<a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/recorder_mode.md">🔴 Recorder</a> |
|
|
253
227
|
<a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/example_logs/ReadMe.md">📊 Dashboard</a> |
|
|
254
|
-
<a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/locale_codes.md">🗾
|
|
228
|
+
<a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/locale_codes.md">🗾 Locale</a> |
|
|
255
229
|
<a href="https://seleniumbase.io/devices/?url=seleniumbase.com">💻 Farm</a>
|
|
256
230
|
<br />
|
|
257
231
|
<a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/commander.md">🎖️ GUI</a> |
|
|
@@ -262,18 +236,17 @@ Dynamic: summary
|
|
|
262
236
|
<a href="https://github.com/seleniumbase/SeleniumBase/blob/master/seleniumbase/utilities/selenium_grid/ReadMe.md">🌐 Grid</a>
|
|
263
237
|
<br />
|
|
264
238
|
<a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/how_it_works.md">👁️ How</a> |
|
|
265
|
-
<a href="https://github.com/seleniumbase/SeleniumBase/tree/master/examples/migration/raw_selenium">🚝
|
|
266
|
-
<a href="https://github.com/seleniumbase/SeleniumBase/blob/master/
|
|
267
|
-
<a href="https://github.com/seleniumbase/SeleniumBase/
|
|
268
|
-
<a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/master_qa/ReadMe.md">🧬 Hybrid</a> |
|
|
239
|
+
<a href="https://github.com/seleniumbase/SeleniumBase/tree/master/examples/migration/raw_selenium">🚝 Migration</a> |
|
|
240
|
+
<a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/cdp_mode/playwright/ReadMe.md">🎭 Stealthy Playwright</a> |
|
|
241
|
+
<a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/master_qa/ReadMe.md">🛂 MasterQA</a> |
|
|
269
242
|
<a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/tour_examples/ReadMe.md">🚎 Tours</a>
|
|
270
243
|
<br />
|
|
271
244
|
<a href="https://github.com/seleniumbase/SeleniumBase/blob/master/integrations/github/workflows/ReadMe.md">🤖 CI/CD</a> |
|
|
272
245
|
<a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/js_package_manager.md">🕹️ JSMgr</a> |
|
|
273
246
|
<a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/translations.md">🌏 Translator</a> |
|
|
274
247
|
<a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/presenter/ReadMe.md">🎞️ Presenter</a> |
|
|
275
|
-
<a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/
|
|
276
|
-
<a href="https://github.com/seleniumbase/SeleniumBase/blob/master/
|
|
248
|
+
<a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/visual_testing/ReadMe.md">🖼️ Visual</a> |
|
|
249
|
+
<a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/case_plans.md">🗂️ CPlans</a>
|
|
277
250
|
<br />
|
|
278
251
|
</p>
|
|
279
252
|
|
|
@@ -24,11 +24,11 @@
|
|
|
24
24
|
<a href="https://github.com/seleniumbase/SeleniumBase/blob/master/seleniumbase/console_scripts/ReadMe.md">🌠 Scripts</a> |
|
|
25
25
|
<a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/mobile_testing.md">📱 Mobile</a>
|
|
26
26
|
<br />
|
|
27
|
-
<a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/method_summary.md">📘
|
|
28
|
-
<a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/syntax_formats.md"> 🔠
|
|
27
|
+
<a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/method_summary.md">📘 API</a> |
|
|
28
|
+
<a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/syntax_formats.md"> 🔠 Syntaxes</a> |
|
|
29
29
|
<a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/recorder_mode.md">🔴 Recorder</a> |
|
|
30
30
|
<a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/example_logs/ReadMe.md">📊 Dashboard</a> |
|
|
31
|
-
<a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/locale_codes.md">🗾
|
|
31
|
+
<a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/locale_codes.md">🗾 Locale</a> |
|
|
32
32
|
<a href="https://seleniumbase.io/devices/?url=seleniumbase.com">💻 Farm</a>
|
|
33
33
|
<br />
|
|
34
34
|
<a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/commander.md">🎖️ GUI</a> |
|
|
@@ -39,18 +39,17 @@
|
|
|
39
39
|
<a href="https://github.com/seleniumbase/SeleniumBase/blob/master/seleniumbase/utilities/selenium_grid/ReadMe.md">🌐 Grid</a>
|
|
40
40
|
<br />
|
|
41
41
|
<a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/how_it_works.md">👁️ How</a> |
|
|
42
|
-
<a href="https://github.com/seleniumbase/SeleniumBase/tree/master/examples/migration/raw_selenium">🚝
|
|
43
|
-
<a href="https://github.com/seleniumbase/SeleniumBase/blob/master/
|
|
44
|
-
<a href="https://github.com/seleniumbase/SeleniumBase/
|
|
45
|
-
<a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/master_qa/ReadMe.md">🧬 Hybrid</a> |
|
|
42
|
+
<a href="https://github.com/seleniumbase/SeleniumBase/tree/master/examples/migration/raw_selenium">🚝 Migration</a> |
|
|
43
|
+
<a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/cdp_mode/playwright/ReadMe.md">🎭 Stealthy Playwright</a> |
|
|
44
|
+
<a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/master_qa/ReadMe.md">🛂 MasterQA</a> |
|
|
46
45
|
<a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/tour_examples/ReadMe.md">🚎 Tours</a>
|
|
47
46
|
<br />
|
|
48
47
|
<a href="https://github.com/seleniumbase/SeleniumBase/blob/master/integrations/github/workflows/ReadMe.md">🤖 CI/CD</a> |
|
|
49
48
|
<a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/js_package_manager.md">🕹️ JSMgr</a> |
|
|
50
49
|
<a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/translations.md">🌏 Translator</a> |
|
|
51
50
|
<a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/presenter/ReadMe.md">🎞️ Presenter</a> |
|
|
52
|
-
<a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/
|
|
53
|
-
<a href="https://github.com/seleniumbase/SeleniumBase/blob/master/
|
|
51
|
+
<a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/visual_testing/ReadMe.md">🖼️ Visual</a> |
|
|
52
|
+
<a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/case_plans.md">🗂️ CPlans</a>
|
|
54
53
|
<br />
|
|
55
54
|
</p>
|
|
56
55
|
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
pip>=25.3
|
|
2
|
+
packaging>=25.0
|
|
3
|
+
setuptools~=70.2;python_version<"3.10"
|
|
4
|
+
setuptools>=80.9.0;python_version>="3.10"
|
|
5
|
+
wheel>=0.45.1
|
|
6
|
+
attrs>=25.4.0
|
|
7
|
+
certifi>=2025.11.12
|
|
8
|
+
exceptiongroup>=1.3.1
|
|
9
|
+
websockets>=15.0.1
|
|
10
|
+
filelock~=3.19.1;python_version<"3.10"
|
|
11
|
+
filelock>=3.20.0;python_version>="3.10"
|
|
12
|
+
fasteners>=0.20
|
|
13
|
+
mycdp>=1.3.2
|
|
14
|
+
pynose>=1.5.5
|
|
15
|
+
platformdirs~=4.4.0;python_version<"3.10"
|
|
16
|
+
platformdirs>=4.5.1;python_version>="3.10"
|
|
17
|
+
typing-extensions>=4.15.0
|
|
18
|
+
sbvirtualdisplay>=1.4.0
|
|
19
|
+
MarkupSafe>=3.0.3
|
|
20
|
+
Jinja2>=3.1.6
|
|
21
|
+
six>=1.17.0
|
|
22
|
+
parse>=1.20.2
|
|
23
|
+
parse-type>=0.6.6
|
|
24
|
+
colorama>=0.4.6
|
|
25
|
+
pyyaml>=6.0.3
|
|
26
|
+
pygments>=2.19.2
|
|
27
|
+
pyreadline3>=3.5.4;platform_system=="Windows"
|
|
28
|
+
tabcompleter>=1.4.0
|
|
29
|
+
pdbp>=1.8.1
|
|
30
|
+
idna>=3.11
|
|
31
|
+
chardet==5.2.0
|
|
32
|
+
charset-normalizer>=3.4.4,<4
|
|
33
|
+
urllib3>=1.26.20,<2;python_version<"3.10"
|
|
34
|
+
urllib3>=1.26.20,<3;python_version>="3.10"
|
|
35
|
+
requests~=2.32.5
|
|
36
|
+
sniffio==1.3.1
|
|
37
|
+
h11==0.16.0
|
|
38
|
+
outcome==1.3.0.post0
|
|
39
|
+
trio>=0.31.0,<1;python_version<"3.10"
|
|
40
|
+
trio>=0.32.0,<1;python_version>="3.10"
|
|
41
|
+
trio-websocket~=0.12.2
|
|
42
|
+
wsproto==1.2.0;python_version<"3.10"
|
|
43
|
+
wsproto~=1.3.2;python_version>="3.10"
|
|
44
|
+
websocket-client~=1.9.0
|
|
45
|
+
selenium==4.32.0;python_version<"3.10"
|
|
46
|
+
selenium==4.39.0;python_version>="3.10"
|
|
47
|
+
cssselect==1.3.0
|
|
48
|
+
nest-asyncio==1.6.0
|
|
49
|
+
sortedcontainers==2.4.0
|
|
50
|
+
execnet==2.1.1;python_version<"3.10"
|
|
51
|
+
execnet==2.1.2;python_version>="3.10"
|
|
52
|
+
iniconfig==2.1.0;python_version<"3.10"
|
|
53
|
+
iniconfig==2.3.0;python_version>="3.10"
|
|
54
|
+
pluggy==1.6.0
|
|
55
|
+
pytest==8.4.2;python_version<"3.11"
|
|
56
|
+
pytest==9.0.2;python_version>="3.11"
|
|
57
|
+
pytest-html==4.0.2
|
|
58
|
+
pytest-metadata==3.1.1
|
|
59
|
+
pytest-ordering==0.6
|
|
60
|
+
pytest-rerunfailures==16.0.1;python_version<"3.10"
|
|
61
|
+
pytest-rerunfailures==16.1;python_version>="3.10"
|
|
62
|
+
pytest-xdist==3.8.0
|
|
63
|
+
parameterized==0.9.0
|
|
64
|
+
behave==1.2.6
|
|
65
|
+
soupsieve~=2.8
|
|
66
|
+
beautifulsoup4~=4.14.3
|
|
67
|
+
pyotp==2.9.0
|
|
68
|
+
python-xlib==0.33;platform_system=="Linux"
|
|
69
|
+
PyAutoGUI>=0.9.54;platform_system=="Linux"
|
|
70
|
+
markdown-it-py==3.0.0;python_version<"3.10"
|
|
71
|
+
markdown-it-py==4.0.0;python_version>="3.10"
|
|
72
|
+
mdurl==0.1.2
|
|
73
|
+
rich>=14.2.0,<15
|
|
74
|
+
|
|
75
|
+
# --- Testing Requirements --- #
|
|
76
|
+
# ("pip install -r requirements.txt" also installs this, but "pip install -e ." won't.)
|
|
77
|
+
|
|
78
|
+
coverage>=7.10.7;python_version<"3.10"
|
|
79
|
+
coverage>=7.13.0;python_version>="3.10"
|
|
80
|
+
pytest-cov>=7.0.0
|
|
81
|
+
flake8==7.3.0
|
|
82
|
+
mccabe==0.7.0
|
|
83
|
+
pyflakes==3.4.0
|
|
84
|
+
pycodestyle==2.14.0
|
|
@@ -177,7 +177,7 @@ def requests_get_with_retry(url):
|
|
|
177
177
|
|
|
178
178
|
|
|
179
179
|
def get_cft_known_good_versions():
|
|
180
|
-
if
|
|
180
|
+
if getattr(sb_config, "cft_kgv_json", None):
|
|
181
181
|
return sb_config.cft_kgv_json
|
|
182
182
|
cft_ngv_url = (
|
|
183
183
|
"https://googlechromelabs.github.io/"
|
|
@@ -188,7 +188,7 @@ def get_cft_known_good_versions():
|
|
|
188
188
|
|
|
189
189
|
|
|
190
190
|
def get_cft_latest_versions_per_milestone():
|
|
191
|
-
if
|
|
191
|
+
if getattr(sb_config, "cft_lvpm_json", None):
|
|
192
192
|
return sb_config.cft_lvpm_json
|
|
193
193
|
cft_lvpm_url = (
|
|
194
194
|
"https://googlechromelabs.github.io/"
|
|
@@ -205,7 +205,7 @@ def get_cft_latest_version_from_milestone(milestone):
|
|
|
205
205
|
|
|
206
206
|
def get_latest_chromedriver_version(channel="Stable"):
|
|
207
207
|
try:
|
|
208
|
-
if
|
|
208
|
+
if getattr(sb_config, "cft_lkgv_json", None):
|
|
209
209
|
return sb_config.cft_lkgv_json["channels"][channel]["version"]
|
|
210
210
|
req = requests_get(
|
|
211
211
|
"https://googlechromelabs.github.io/"
|
|
@@ -239,10 +239,7 @@ def get_latest_canary_chromedriver_version():
|
|
|
239
239
|
def log_d(message):
|
|
240
240
|
"""If setting sb_config.settings.HIDE_DRIVER_DOWNLOADS to True,
|
|
241
241
|
output from driver downloads are logged instead of printed."""
|
|
242
|
-
if (
|
|
243
|
-
hasattr(sb_config.settings, "HIDE_DRIVER_DOWNLOADS")
|
|
244
|
-
and sb_config.settings.HIDE_DRIVER_DOWNLOADS
|
|
245
|
-
):
|
|
242
|
+
if getattr(sb_config.settings, "HIDE_DRIVER_DOWNLOADS", None):
|
|
246
243
|
logging.debug(message)
|
|
247
244
|
else:
|
|
248
245
|
print(message)
|
|
@@ -251,7 +248,7 @@ def log_d(message):
|
|
|
251
248
|
def main(override=None, intel_for_uc=None, force_uc=None):
|
|
252
249
|
if override:
|
|
253
250
|
found_proxy = None
|
|
254
|
-
if
|
|
251
|
+
if getattr(sb_config, "proxy_driver", None):
|
|
255
252
|
if " --proxy=" in " ".join(sys.argv):
|
|
256
253
|
for arg in sys.argv:
|
|
257
254
|
if arg.startswith("--proxy="):
|
|
@@ -311,8 +308,7 @@ def main(override=None, intel_for_uc=None, force_uc=None):
|
|
|
311
308
|
downloads_folder = DRIVER_DIR
|
|
312
309
|
if (
|
|
313
310
|
hasattr(sb_config, "settings")
|
|
314
|
-
and
|
|
315
|
-
and sb_config.settings.NEW_DRIVER_DIR
|
|
311
|
+
and getattr(sb_config.settings, "NEW_DRIVER_DIR", None)
|
|
316
312
|
and os.path.exists(sb_config.settings.NEW_DRIVER_DIR)
|
|
317
313
|
):
|
|
318
314
|
downloads_folder = sb_config.settings.NEW_DRIVER_DIR
|
|
@@ -84,6 +84,10 @@ def main():
|
|
|
84
84
|
error_msg = None
|
|
85
85
|
invalid_cmd = None
|
|
86
86
|
use_edge = False
|
|
87
|
+
use_opera = False
|
|
88
|
+
use_brave = False
|
|
89
|
+
use_comet = False
|
|
90
|
+
use_atlas = False
|
|
87
91
|
use_uc = False
|
|
88
92
|
esc_end = False
|
|
89
93
|
start_page = None
|
|
@@ -138,6 +142,14 @@ def main():
|
|
|
138
142
|
help_me = True
|
|
139
143
|
elif option.lower() == "--edge":
|
|
140
144
|
use_edge = True
|
|
145
|
+
elif option.lower() == "--opera":
|
|
146
|
+
use_opera = True
|
|
147
|
+
elif option.lower() == "--brave":
|
|
148
|
+
use_brave = True
|
|
149
|
+
elif option.lower() == "--comet":
|
|
150
|
+
use_comet = True
|
|
151
|
+
elif option.lower() == "--atlas":
|
|
152
|
+
use_atlas = True
|
|
141
153
|
elif option.lower() == "--ee":
|
|
142
154
|
esc_end = True
|
|
143
155
|
elif option.lower() in ("--gui", "--headed"):
|
|
@@ -275,6 +287,14 @@ def main():
|
|
|
275
287
|
)
|
|
276
288
|
if use_edge:
|
|
277
289
|
run_cmd += " --edge"
|
|
290
|
+
elif use_opera:
|
|
291
|
+
run_cmd += " --opera"
|
|
292
|
+
elif use_brave:
|
|
293
|
+
run_cmd += " --brave"
|
|
294
|
+
elif use_comet:
|
|
295
|
+
run_cmd += " --comet"
|
|
296
|
+
elif use_atlas:
|
|
297
|
+
run_cmd += " --atlas"
|
|
278
298
|
if force_gui:
|
|
279
299
|
run_cmd += " --gui"
|
|
280
300
|
if use_uc:
|
|
@@ -144,6 +144,14 @@ def do_recording(file_name, url, overwrite_enabled, use_chrome, window):
|
|
|
144
144
|
)
|
|
145
145
|
if not use_chrome:
|
|
146
146
|
command += " --edge"
|
|
147
|
+
elif "--opera" in command_args:
|
|
148
|
+
command += " --opera"
|
|
149
|
+
elif "--brave" in command_args:
|
|
150
|
+
command += " --brave"
|
|
151
|
+
elif "--comet" in command_args:
|
|
152
|
+
command += " --comet"
|
|
153
|
+
elif "--atlas" in command_args:
|
|
154
|
+
command += " --atlas"
|
|
147
155
|
if (
|
|
148
156
|
"--uc" in command_args
|
|
149
157
|
or "--cdp" in command_args
|
|
@@ -226,10 +234,37 @@ def create_tkinter_gui():
|
|
|
226
234
|
chk = tk.Checkbutton(window, text="Overwrite existing files", variable=cbx)
|
|
227
235
|
chk.pack()
|
|
228
236
|
chk.select()
|
|
237
|
+
use_stealth = False
|
|
238
|
+
command_args = sys.argv[2:]
|
|
239
|
+
if (
|
|
240
|
+
"--uc" in command_args
|
|
241
|
+
or "--cdp" in command_args
|
|
242
|
+
or "--undetected" in command_args
|
|
243
|
+
or "--undetectable" in command_args
|
|
244
|
+
):
|
|
245
|
+
use_stealth = True
|
|
246
|
+
browser_display = "Use Chrome over Edge"
|
|
247
|
+
if "--opera" in command_args:
|
|
248
|
+
browser_display = "Use Opera over Edge"
|
|
249
|
+
elif "--brave" in command_args:
|
|
250
|
+
browser_display = "Use Brave over Edge"
|
|
251
|
+
elif "--comet" in command_args:
|
|
252
|
+
browser_display = "Use Comet over Edge"
|
|
253
|
+
elif "--atlas" in command_args:
|
|
254
|
+
browser_display = "Use Atlas over Edge"
|
|
229
255
|
cbb = tk.IntVar()
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
256
|
+
if not use_stealth:
|
|
257
|
+
chkb = tk.Checkbutton(window, text=browser_display, variable=cbb)
|
|
258
|
+
chkb.pack()
|
|
259
|
+
if "--edge" not in command_args:
|
|
260
|
+
chkb.select()
|
|
261
|
+
else:
|
|
262
|
+
chkb = tk.Checkbutton(
|
|
263
|
+
window, text="Stealthy Chrome Mode", variable=cbb
|
|
264
|
+
)
|
|
265
|
+
chkb.pack()
|
|
266
|
+
chkb.select()
|
|
267
|
+
chkb.config(state=tk.DISABLED)
|
|
233
268
|
tk.Label(window, text="").pack()
|
|
234
269
|
url = tk.StringVar()
|
|
235
270
|
tk.Label(window, text="Enter the URL to start recording on:").pack()
|