seleniumbase 4.41.0__tar.gz → 4.41.2__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.41.0/seleniumbase.egg-info → seleniumbase-4.41.2}/PKG-INFO +7 -6
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/requirements.txt +6 -5
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/__version__.py +1 -1
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/core/browser_launcher.py +5 -1
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/core/sb_cdp.py +146 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2/seleniumbase.egg-info}/PKG-INFO +7 -6
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase.egg-info/requires.txt +6 -5
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/setup.py +6 -5
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/.gitignore +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/LICENSE +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/MANIFEST.in +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/README.md +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/install.sh +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/pyproject.toml +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/pytest.ini +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/sbase/__init__.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/sbase/__main__.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/sbase/steps.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/__init__.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/__main__.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/behave/__init__.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/behave/behave_helper.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/behave/behave_sb.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/behave/steps.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/common/__init__.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/common/decorators.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/common/encryption.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/common/exceptions.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/common/obfuscate.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/common/unobfuscate.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/config/__init__.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/config/ad_block_list.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/config/proxy_list.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/config/settings.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/console_scripts/__init__.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/console_scripts/logo_helper.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/console_scripts/rich_helper.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/console_scripts/run.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/console_scripts/sb_behave_gui.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/console_scripts/sb_caseplans.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/console_scripts/sb_commander.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/console_scripts/sb_install.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/console_scripts/sb_mkchart.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/console_scripts/sb_mkdir.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/console_scripts/sb_mkfile.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/console_scripts/sb_mkpres.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/console_scripts/sb_mkrec.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/console_scripts/sb_objectify.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/console_scripts/sb_print.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/console_scripts/sb_recorder.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/core/__init__.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/core/application_manager.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/core/capabilities_parser.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/core/colored_traceback.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/core/create_db_tables.sql +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/core/detect_b_ver.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/core/download_helper.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/core/encoded_images.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/core/jqc_helper.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/core/log_helper.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/core/mysql.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/core/proxy_helper.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/core/recorder_helper.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/core/report_helper.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/core/s3_manager.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/core/sb_driver.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/core/session_helper.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/core/settings_parser.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/core/style_sheet.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/core/testcase_manager.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/core/tour_helper.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/core/visual_helper.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/drivers/__init__.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/drivers/cft_drivers/__init__.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/drivers/chs_drivers/__init__.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/extensions/__init__.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/extensions/ad_block.zip +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/extensions/disable_csp.zip +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/extensions/recorder.zip +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/extensions/sbase_ext.zip +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/fixtures/__init__.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/fixtures/base_case.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/fixtures/constants.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/fixtures/css_to_xpath.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/fixtures/errors.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/fixtures/js_utils.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/fixtures/page_actions.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/fixtures/page_utils.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/fixtures/shared_utils.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/fixtures/unittest_helper.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/fixtures/words.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/fixtures/xpath_to_css.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/js_code/__init__.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/js_code/active_css_js.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/js_code/live_js.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/js_code/recorder_js.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/masterqa/__init__.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/masterqa/master_qa.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/plugins/__init__.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/plugins/base_plugin.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/plugins/basic_test_info.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/plugins/db_reporting_plugin.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/plugins/driver_manager.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/plugins/page_source.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/plugins/pytest_plugin.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/plugins/s3_logging_plugin.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/plugins/sb_manager.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/plugins/screen_shots.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/plugins/selenium_plugin.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/resources/__init__.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/translate/__init__.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/translate/chinese.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/translate/dutch.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/translate/french.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/translate/italian.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/translate/japanese.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/translate/korean.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/translate/master_dict.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/translate/portuguese.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/translate/russian.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/translate/spanish.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/translate/translator.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/undetected/__init__.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/undetected/cdp.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/undetected/cdp_driver/__init__.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/undetected/cdp_driver/_contradict.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/undetected/cdp_driver/browser.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/undetected/cdp_driver/cdp_util.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/undetected/cdp_driver/config.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/undetected/cdp_driver/connection.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/undetected/cdp_driver/element.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/undetected/cdp_driver/tab.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/undetected/dprocess.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/undetected/options.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/undetected/patcher.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/undetected/reactor.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/undetected/webelement.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/utilities/__init__.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/utilities/selenium_grid/__init__.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/utilities/selenium_grid/download_selenium_server.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/utilities/selenium_grid/font_color +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/utilities/selenium_grid/grid-hub +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/utilities/selenium_grid/grid-node +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/utilities/selenium_grid/grid_hub.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/utilities/selenium_grid/grid_node.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/utilities/selenium_grid/register-grid-node.bat +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/utilities/selenium_grid/register-grid-node.sh +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/utilities/selenium_grid/start-grid-hub.bat +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/utilities/selenium_grid/start-grid-hub.sh +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/utilities/selenium_ide/__init__.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/utilities/selenium_ide/convert_ide.py +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase.egg-info/SOURCES.txt +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase.egg-info/dependency_links.txt +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase.egg-info/entry_points.txt +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase.egg-info/top_level.txt +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/setup.cfg +0 -0
- {seleniumbase-4.41.0 → seleniumbase-4.41.2}/virtualenv_install.sh +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: seleniumbase
|
3
|
-
Version: 4.41.
|
3
|
+
Version: 4.41.2
|
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
|
@@ -72,12 +72,12 @@ Requires-Dist: exceptiongroup>=1.3.0
|
|
72
72
|
Requires-Dist: websockets~=13.1; python_version < "3.9"
|
73
73
|
Requires-Dist: websockets>=15.0.1; python_version >= "3.9"
|
74
74
|
Requires-Dist: filelock~=3.16.1; python_version < "3.9"
|
75
|
-
Requires-Dist: filelock>=3.
|
75
|
+
Requires-Dist: filelock>=3.19.1; python_version >= "3.9"
|
76
76
|
Requires-Dist: fasteners>=0.20
|
77
77
|
Requires-Dist: mycdp>=1.2.0
|
78
78
|
Requires-Dist: pynose>=1.5.4
|
79
79
|
Requires-Dist: platformdirs>=4.3.6; python_version < "3.9"
|
80
|
-
Requires-Dist: platformdirs>=4.
|
80
|
+
Requires-Dist: platformdirs>=4.4.0; python_version >= "3.9"
|
81
81
|
Requires-Dist: typing-extensions>=4.13.2
|
82
82
|
Requires-Dist: sbvirtualdisplay>=1.4.0
|
83
83
|
Requires-Dist: MarkupSafe==2.1.5; python_version < "3.9"
|
@@ -97,7 +97,8 @@ Requires-Dist: chardet==5.2.0
|
|
97
97
|
Requires-Dist: charset-normalizer<4,>=3.4.3
|
98
98
|
Requires-Dist: urllib3<2,>=1.26.20; python_version < "3.10"
|
99
99
|
Requires-Dist: urllib3<2.6.0,>=1.26.20; python_version >= "3.10"
|
100
|
-
Requires-Dist: requests==2.32.4
|
100
|
+
Requires-Dist: requests==2.32.4; python_version < "3.9"
|
101
|
+
Requires-Dist: requests<2.33,>=2.32.5; python_version >= "3.9"
|
101
102
|
Requires-Dist: sniffio==1.3.1
|
102
103
|
Requires-Dist: h11==0.16.0
|
103
104
|
Requires-Dist: outcome==1.3.0.post0
|
@@ -128,7 +129,7 @@ Requires-Dist: pytest-xdist==3.8.0; python_version >= "3.9"
|
|
128
129
|
Requires-Dist: parameterized==0.9.0
|
129
130
|
Requires-Dist: behave==1.2.6
|
130
131
|
Requires-Dist: soupsieve==2.7
|
131
|
-
Requires-Dist: beautifulsoup4
|
132
|
+
Requires-Dist: beautifulsoup4<4.14,>=4.13.5
|
132
133
|
Requires-Dist: pyotp==2.9.0
|
133
134
|
Requires-Dist: python-xlib==0.33; platform_system == "Linux"
|
134
135
|
Requires-Dist: markdown-it-py==3.0.0; python_version < "3.10"
|
@@ -141,7 +142,7 @@ Requires-Dist: allure-python-commons>=2.13.5; extra == "allure"
|
|
141
142
|
Requires-Dist: allure-behave>=2.13.5; extra == "allure"
|
142
143
|
Provides-Extra: coverage
|
143
144
|
Requires-Dist: coverage>=7.6.1; python_version < "3.9" and extra == "coverage"
|
144
|
-
Requires-Dist: coverage>=7.10.
|
145
|
+
Requires-Dist: coverage>=7.10.5; python_version >= "3.9" and extra == "coverage"
|
145
146
|
Requires-Dist: pytest-cov>=5.0.0; python_version < "3.9" and extra == "coverage"
|
146
147
|
Requires-Dist: pytest-cov>=6.2.1; python_version >= "3.9" and extra == "coverage"
|
147
148
|
Provides-Extra: flake8
|
@@ -10,12 +10,12 @@ exceptiongroup>=1.3.0
|
|
10
10
|
websockets~=13.1;python_version<"3.9"
|
11
11
|
websockets>=15.0.1;python_version>="3.9"
|
12
12
|
filelock~=3.16.1;python_version<"3.9"
|
13
|
-
filelock>=3.
|
13
|
+
filelock>=3.19.1;python_version>="3.9"
|
14
14
|
fasteners>=0.20
|
15
15
|
mycdp>=1.2.0
|
16
16
|
pynose>=1.5.4
|
17
17
|
platformdirs>=4.3.6;python_version<"3.9"
|
18
|
-
platformdirs>=4.
|
18
|
+
platformdirs>=4.4.0;python_version>="3.9"
|
19
19
|
typing-extensions>=4.13.2
|
20
20
|
sbvirtualdisplay>=1.4.0
|
21
21
|
MarkupSafe==2.1.5;python_version<"3.9"
|
@@ -35,7 +35,8 @@ chardet==5.2.0
|
|
35
35
|
charset-normalizer>=3.4.3,<4
|
36
36
|
urllib3>=1.26.20,<2;python_version<"3.10"
|
37
37
|
urllib3>=1.26.20,<2.6.0;python_version>="3.10"
|
38
|
-
requests==2.32.4
|
38
|
+
requests==2.32.4;python_version<"3.9"
|
39
|
+
requests>=2.32.5,<2.33;python_version>="3.9"
|
39
40
|
sniffio==1.3.1
|
40
41
|
h11==0.16.0
|
41
42
|
outcome==1.3.0.post0
|
@@ -66,7 +67,7 @@ pytest-xdist==3.8.0;python_version>="3.9"
|
|
66
67
|
parameterized==0.9.0
|
67
68
|
behave==1.2.6
|
68
69
|
soupsieve==2.7
|
69
|
-
beautifulsoup4
|
70
|
+
beautifulsoup4>=4.13.5,<4.14
|
70
71
|
pyotp==2.9.0
|
71
72
|
python-xlib==0.33;platform_system=="Linux"
|
72
73
|
markdown-it-py==3.0.0;python_version<"3.10"
|
@@ -78,7 +79,7 @@ rich>=14.1.0,<15
|
|
78
79
|
# ("pip install -r requirements.txt" also installs this, but "pip install -e ." won't.)
|
79
80
|
|
80
81
|
coverage>=7.6.1;python_version<"3.9"
|
81
|
-
coverage>=7.10.
|
82
|
+
coverage>=7.10.5;python_version>="3.9"
|
82
83
|
pytest-cov>=5.0.0;python_version<"3.9"
|
83
84
|
pytest-cov>=6.2.1;python_version>="3.9"
|
84
85
|
flake8==5.0.4;python_version<"3.9"
|
@@ -1,2 +1,2 @@
|
|
1
1
|
# seleniumbase package
|
2
|
-
__version__ = "4.41.
|
2
|
+
__version__ = "4.41.2"
|
@@ -762,6 +762,7 @@ def uc_open_with_cdp_mode(driver, url=None, **kwargs):
|
|
762
762
|
cdp.gui_write = CDPM.gui_write
|
763
763
|
cdp.gui_click_x_y = CDPM.gui_click_x_y
|
764
764
|
cdp.gui_click_element = CDPM.gui_click_element
|
765
|
+
cdp.gui_click_captcha = CDPM.gui_click_captcha
|
765
766
|
cdp.gui_drag_drop_points = CDPM.gui_drag_drop_points
|
766
767
|
cdp.gui_drag_and_drop = CDPM.gui_drag_and_drop
|
767
768
|
cdp.gui_click_and_hold = CDPM.gui_click_and_hold
|
@@ -1504,7 +1505,10 @@ def _uc_gui_click_captcha(
|
|
1504
1505
|
y += 0.5
|
1505
1506
|
else:
|
1506
1507
|
x = (i_x + 32) * width_ratio
|
1507
|
-
|
1508
|
+
if not IS_WINDOWS:
|
1509
|
+
y = (i_y + 32) * width_ratio
|
1510
|
+
else:
|
1511
|
+
y = (i_y + 22) * width_ratio
|
1508
1512
|
if driver.is_connected():
|
1509
1513
|
driver.switch_to.default_content()
|
1510
1514
|
except Exception:
|
@@ -1629,6 +1629,152 @@ class CDPMethods():
|
|
1629
1629
|
self.__slow_mode_pause_if_set()
|
1630
1630
|
self.loop.run_until_complete(self.page.wait())
|
1631
1631
|
|
1632
|
+
def _on_a_cf_turnstile_page(self):
|
1633
|
+
source = self.get_page_source()
|
1634
|
+
if (
|
1635
|
+
'data-callback="onCaptchaSuccess"' in source
|
1636
|
+
or "/challenge-platform/scripts/" in source
|
1637
|
+
or 'id="challenge-widget-' in source
|
1638
|
+
or "cf-turnstile-" in source
|
1639
|
+
):
|
1640
|
+
return True
|
1641
|
+
return False
|
1642
|
+
|
1643
|
+
def gui_click_captcha(self):
|
1644
|
+
if not self._on_a_cf_turnstile_page():
|
1645
|
+
return
|
1646
|
+
selector = None
|
1647
|
+
if (
|
1648
|
+
self.is_element_present('[name*="cf-turnstile-"]')
|
1649
|
+
and self.is_element_present("#challenge-form div > div")
|
1650
|
+
):
|
1651
|
+
selector = "#challenge-form div > div"
|
1652
|
+
elif (
|
1653
|
+
self.is_element_present('[name*="cf-turnstile-"]')
|
1654
|
+
and self.is_element_present(
|
1655
|
+
'[style="display: grid;"] div div'
|
1656
|
+
)
|
1657
|
+
):
|
1658
|
+
selector = '[style="display: grid;"] div div'
|
1659
|
+
elif (
|
1660
|
+
self.is_element_present('[name*="cf-turnstile-"]')
|
1661
|
+
and self.is_element_present("[class*=spacer] + div div")
|
1662
|
+
):
|
1663
|
+
selector = '[class*=spacer] + div div'
|
1664
|
+
elif (
|
1665
|
+
self.is_element_present('[name*="cf-turnstile-"]')
|
1666
|
+
and self.is_element_present("div.spacer div")
|
1667
|
+
):
|
1668
|
+
selector = "div.spacer div"
|
1669
|
+
elif (
|
1670
|
+
self.is_element_present('script[src*="challenges.c"]')
|
1671
|
+
and self.is_element_present(
|
1672
|
+
'[data-testid*="challenge-"] div'
|
1673
|
+
)
|
1674
|
+
):
|
1675
|
+
selector = '[data-testid*="challenge-"] div'
|
1676
|
+
elif self.is_element_present(
|
1677
|
+
"div#turnstile-widget div:not([class])"
|
1678
|
+
):
|
1679
|
+
selector = "div#turnstile-widget div:not([class])"
|
1680
|
+
elif self.is_element_present(
|
1681
|
+
'form div:not([class]):has(input[name*="cf-turn"])'
|
1682
|
+
):
|
1683
|
+
selector = 'form div:not([class]):has(input[name*="cf-turn"])'
|
1684
|
+
elif (
|
1685
|
+
self.is_element_present('[src*="/turnstile/"]')
|
1686
|
+
and self.is_element_present("form div:not(:has(*))")
|
1687
|
+
):
|
1688
|
+
selector = "form div:not(:has(*))"
|
1689
|
+
elif (
|
1690
|
+
self.is_element_present('[src*="/turnstile/"]')
|
1691
|
+
and self.is_element_present(
|
1692
|
+
"body > div#check > div:not([class])"
|
1693
|
+
)
|
1694
|
+
):
|
1695
|
+
selector = "body > div#check > div:not([class])"
|
1696
|
+
elif self.is_element_present(".cf-turnstile-wrapper"):
|
1697
|
+
selector = ".cf-turnstile-wrapper"
|
1698
|
+
elif self.is_element_present('[class="cf-turnstile"]'):
|
1699
|
+
selector = '[class="cf-turnstile"]'
|
1700
|
+
elif self.is_element_present(
|
1701
|
+
'[data-callback="onCaptchaSuccess"]'
|
1702
|
+
):
|
1703
|
+
selector = '[data-callback="onCaptchaSuccess"]'
|
1704
|
+
else:
|
1705
|
+
return
|
1706
|
+
if not selector:
|
1707
|
+
return
|
1708
|
+
if (
|
1709
|
+
self.is_element_present("form")
|
1710
|
+
and (
|
1711
|
+
self.is_element_present('form[class*="center"]')
|
1712
|
+
or self.is_element_present('form[class*="right"]')
|
1713
|
+
or self.is_element_present('form div[class*="center"]')
|
1714
|
+
or self.is_element_present('form div[class*="right"]')
|
1715
|
+
)
|
1716
|
+
):
|
1717
|
+
script = (
|
1718
|
+
"""var $elements = document.querySelectorAll(
|
1719
|
+
'form[class], form div[class]');
|
1720
|
+
var index = 0, length = $elements.length;
|
1721
|
+
for(; index < length; index++){
|
1722
|
+
the_class = $elements[index].getAttribute('class');
|
1723
|
+
new_class = the_class.replaceAll('center', 'left');
|
1724
|
+
new_class = new_class.replaceAll('right', 'left');
|
1725
|
+
$elements[index].setAttribute('class', new_class);}"""
|
1726
|
+
)
|
1727
|
+
with suppress(Exception):
|
1728
|
+
self.loop.run_until_complete(self.page.evaluate(script))
|
1729
|
+
self.loop.run_until_complete(self.page.wait())
|
1730
|
+
elif (
|
1731
|
+
self.is_element_present("form")
|
1732
|
+
and (
|
1733
|
+
self.is_element_present('form div[style*="center"]')
|
1734
|
+
or self.is_element_present('form div[style*="right"]')
|
1735
|
+
)
|
1736
|
+
):
|
1737
|
+
script = (
|
1738
|
+
"""var $elements = document.querySelectorAll(
|
1739
|
+
'form[style], form div[style]');
|
1740
|
+
var index = 0, length = $elements.length;
|
1741
|
+
for(; index < length; index++){
|
1742
|
+
the_style = $elements[index].getAttribute('style');
|
1743
|
+
new_style = the_style.replaceAll('center', 'left');
|
1744
|
+
new_style = new_style.replaceAll('right', 'left');
|
1745
|
+
$elements[index].setAttribute('style', new_style);}"""
|
1746
|
+
)
|
1747
|
+
with suppress(Exception):
|
1748
|
+
self.loop.run_until_complete(self.page.evaluate(script))
|
1749
|
+
self.loop.run_until_complete(self.page.wait())
|
1750
|
+
elif (
|
1751
|
+
self.is_element_present("form")
|
1752
|
+
and self.is_element_present(
|
1753
|
+
'form [id*="turnstile"] > div:not([class])'
|
1754
|
+
)
|
1755
|
+
):
|
1756
|
+
script = (
|
1757
|
+
"""var $elements = document.querySelectorAll(
|
1758
|
+
'form [id*="turnstile"]');
|
1759
|
+
var index = 0, length = $elements.length;
|
1760
|
+
for(; index < length; index++){
|
1761
|
+
$elements[index].setAttribute('align', 'left');}"""
|
1762
|
+
)
|
1763
|
+
with suppress(Exception):
|
1764
|
+
self.loop.run_until_complete(self.page.evaluate(script))
|
1765
|
+
self.loop.run_until_complete(self.page.wait())
|
1766
|
+
with suppress(Exception):
|
1767
|
+
element_rect = self.get_gui_element_rect(selector, timeout=1)
|
1768
|
+
e_x = element_rect["x"]
|
1769
|
+
e_y = element_rect["y"]
|
1770
|
+
x = e_x + 32
|
1771
|
+
if not shared_utils.is_windows():
|
1772
|
+
y = e_y + 32
|
1773
|
+
else:
|
1774
|
+
y = e_y + 22
|
1775
|
+
sb_config._saved_cf_x_y = (x, y)
|
1776
|
+
self.gui_click_x_y(x, y)
|
1777
|
+
|
1632
1778
|
def __gui_drag_drop(self, x1, y1, x2, y2, timeframe=0.25, uc_lock=False):
|
1633
1779
|
self.__install_pyautogui_if_missing()
|
1634
1780
|
import pyautogui
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: seleniumbase
|
3
|
-
Version: 4.41.
|
3
|
+
Version: 4.41.2
|
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
|
@@ -72,12 +72,12 @@ Requires-Dist: exceptiongroup>=1.3.0
|
|
72
72
|
Requires-Dist: websockets~=13.1; python_version < "3.9"
|
73
73
|
Requires-Dist: websockets>=15.0.1; python_version >= "3.9"
|
74
74
|
Requires-Dist: filelock~=3.16.1; python_version < "3.9"
|
75
|
-
Requires-Dist: filelock>=3.
|
75
|
+
Requires-Dist: filelock>=3.19.1; python_version >= "3.9"
|
76
76
|
Requires-Dist: fasteners>=0.20
|
77
77
|
Requires-Dist: mycdp>=1.2.0
|
78
78
|
Requires-Dist: pynose>=1.5.4
|
79
79
|
Requires-Dist: platformdirs>=4.3.6; python_version < "3.9"
|
80
|
-
Requires-Dist: platformdirs>=4.
|
80
|
+
Requires-Dist: platformdirs>=4.4.0; python_version >= "3.9"
|
81
81
|
Requires-Dist: typing-extensions>=4.13.2
|
82
82
|
Requires-Dist: sbvirtualdisplay>=1.4.0
|
83
83
|
Requires-Dist: MarkupSafe==2.1.5; python_version < "3.9"
|
@@ -97,7 +97,8 @@ Requires-Dist: chardet==5.2.0
|
|
97
97
|
Requires-Dist: charset-normalizer<4,>=3.4.3
|
98
98
|
Requires-Dist: urllib3<2,>=1.26.20; python_version < "3.10"
|
99
99
|
Requires-Dist: urllib3<2.6.0,>=1.26.20; python_version >= "3.10"
|
100
|
-
Requires-Dist: requests==2.32.4
|
100
|
+
Requires-Dist: requests==2.32.4; python_version < "3.9"
|
101
|
+
Requires-Dist: requests<2.33,>=2.32.5; python_version >= "3.9"
|
101
102
|
Requires-Dist: sniffio==1.3.1
|
102
103
|
Requires-Dist: h11==0.16.0
|
103
104
|
Requires-Dist: outcome==1.3.0.post0
|
@@ -128,7 +129,7 @@ Requires-Dist: pytest-xdist==3.8.0; python_version >= "3.9"
|
|
128
129
|
Requires-Dist: parameterized==0.9.0
|
129
130
|
Requires-Dist: behave==1.2.6
|
130
131
|
Requires-Dist: soupsieve==2.7
|
131
|
-
Requires-Dist: beautifulsoup4
|
132
|
+
Requires-Dist: beautifulsoup4<4.14,>=4.13.5
|
132
133
|
Requires-Dist: pyotp==2.9.0
|
133
134
|
Requires-Dist: python-xlib==0.33; platform_system == "Linux"
|
134
135
|
Requires-Dist: markdown-it-py==3.0.0; python_version < "3.10"
|
@@ -141,7 +142,7 @@ Requires-Dist: allure-python-commons>=2.13.5; extra == "allure"
|
|
141
142
|
Requires-Dist: allure-behave>=2.13.5; extra == "allure"
|
142
143
|
Provides-Extra: coverage
|
143
144
|
Requires-Dist: coverage>=7.6.1; python_version < "3.9" and extra == "coverage"
|
144
|
-
Requires-Dist: coverage>=7.10.
|
145
|
+
Requires-Dist: coverage>=7.10.5; python_version >= "3.9" and extra == "coverage"
|
145
146
|
Requires-Dist: pytest-cov>=5.0.0; python_version < "3.9" and extra == "coverage"
|
146
147
|
Requires-Dist: pytest-cov>=6.2.1; python_version >= "3.9" and extra == "coverage"
|
147
148
|
Provides-Extra: flake8
|
@@ -20,7 +20,6 @@ pdbp>=1.7.1
|
|
20
20
|
idna==3.10
|
21
21
|
chardet==5.2.0
|
22
22
|
charset-normalizer<4,>=3.4.3
|
23
|
-
requests==2.32.4
|
24
23
|
sniffio==1.3.1
|
25
24
|
h11==0.16.0
|
26
25
|
outcome==1.3.0.post0
|
@@ -36,7 +35,7 @@ pytest-ordering==0.6
|
|
36
35
|
parameterized==0.9.0
|
37
36
|
behave==1.2.6
|
38
37
|
soupsieve==2.7
|
39
|
-
beautifulsoup4
|
38
|
+
beautifulsoup4<4.14,>=4.13.5
|
40
39
|
pyotp==2.9.0
|
41
40
|
mdurl==0.1.2
|
42
41
|
rich<15,>=14.1.0
|
@@ -58,6 +57,7 @@ websockets~=13.1
|
|
58
57
|
filelock~=3.16.1
|
59
58
|
platformdirs>=4.3.6
|
60
59
|
MarkupSafe==2.1.5
|
60
|
+
requests==2.32.4
|
61
61
|
trio==0.27.0
|
62
62
|
selenium==4.27.1
|
63
63
|
cssselect==1.2.0
|
@@ -75,9 +75,10 @@ markdown-it-py==4.0.0
|
|
75
75
|
[:python_version >= "3.9"]
|
76
76
|
pip>=25.2
|
77
77
|
websockets>=15.0.1
|
78
|
-
filelock>=3.
|
79
|
-
platformdirs>=4.
|
78
|
+
filelock>=3.19.1
|
79
|
+
platformdirs>=4.4.0
|
80
80
|
MarkupSafe>=3.0.2
|
81
|
+
requests<2.33,>=2.32.5
|
81
82
|
trio==0.30.0
|
82
83
|
cssselect==1.3.0
|
83
84
|
pluggy==1.6.0
|
@@ -100,7 +101,7 @@ coverage>=7.6.1
|
|
100
101
|
pytest-cov>=5.0.0
|
101
102
|
|
102
103
|
[coverage:python_version >= "3.9"]
|
103
|
-
coverage>=7.10.
|
104
|
+
coverage>=7.10.5
|
104
105
|
pytest-cov>=6.2.1
|
105
106
|
|
106
107
|
[flake8]
|
@@ -158,12 +158,12 @@ setup(
|
|
158
158
|
'websockets~=13.1;python_version<"3.9"',
|
159
159
|
'websockets>=15.0.1;python_version>="3.9"',
|
160
160
|
'filelock~=3.16.1;python_version<"3.9"',
|
161
|
-
'filelock>=3.
|
161
|
+
'filelock>=3.19.1;python_version>="3.9"',
|
162
162
|
'fasteners>=0.20',
|
163
163
|
"mycdp>=1.2.0",
|
164
164
|
"pynose>=1.5.4",
|
165
165
|
'platformdirs>=4.3.6;python_version<"3.9"',
|
166
|
-
'platformdirs>=4.
|
166
|
+
'platformdirs>=4.4.0;python_version>="3.9"',
|
167
167
|
'typing-extensions>=4.13.2',
|
168
168
|
"sbvirtualdisplay>=1.4.0",
|
169
169
|
'MarkupSafe==2.1.5;python_version<"3.9"',
|
@@ -183,7 +183,8 @@ setup(
|
|
183
183
|
'charset-normalizer>=3.4.3,<4',
|
184
184
|
'urllib3>=1.26.20,<2;python_version<"3.10"',
|
185
185
|
'urllib3>=1.26.20,<2.6.0;python_version>="3.10"',
|
186
|
-
'requests==2.32.4',
|
186
|
+
'requests==2.32.4;python_version<"3.9"',
|
187
|
+
'requests>=2.32.5,<2.33;python_version>="3.9"',
|
187
188
|
'sniffio==1.3.1',
|
188
189
|
'h11==0.16.0',
|
189
190
|
'outcome==1.3.0.post0',
|
@@ -214,7 +215,7 @@ setup(
|
|
214
215
|
'parameterized==0.9.0',
|
215
216
|
"behave==1.2.6", # Newer ones had issues
|
216
217
|
'soupsieve==2.7',
|
217
|
-
"beautifulsoup4
|
218
|
+
"beautifulsoup4>=4.13.5,<4.14",
|
218
219
|
'pyotp==2.9.0',
|
219
220
|
'python-xlib==0.33;platform_system=="Linux"',
|
220
221
|
'markdown-it-py==3.0.0;python_version<"3.10"',
|
@@ -235,7 +236,7 @@ setup(
|
|
235
236
|
# Usage: coverage run -m pytest; coverage html; coverage report
|
236
237
|
"coverage": [
|
237
238
|
'coverage>=7.6.1;python_version<"3.9"',
|
238
|
-
'coverage>=7.10.
|
239
|
+
'coverage>=7.10.5;python_version>="3.9"',
|
239
240
|
'pytest-cov>=5.0.0;python_version<"3.9"',
|
240
241
|
'pytest-cov>=6.2.1;python_version>="3.9"',
|
241
242
|
],
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/undetected/cdp_driver/_contradict.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/undetected/cdp_driver/connection.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/utilities/selenium_grid/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/utilities/selenium_grid/grid_hub.py
RENAMED
File without changes
|
{seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/utilities/selenium_grid/grid_node.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/utilities/selenium_grid/start-grid-hub.bat
RENAMED
File without changes
|
{seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/utilities/selenium_grid/start-grid-hub.sh
RENAMED
File without changes
|
File without changes
|
{seleniumbase-4.41.0 → seleniumbase-4.41.2}/seleniumbase/utilities/selenium_ide/convert_ide.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|