seleniumbase 4.57.0__tar.gz → 4.58.0__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.57.0/seleniumbase.egg-info → seleniumbase-4.58.0}/PKG-INFO +61 -75
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/README.md +52 -64
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/requirements.txt +6 -6
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/__version__.py +1 -1
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/console_scripts/run.py +3 -3
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/console_scripts/sb_install.py +30 -15
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/core/browser_launcher.py +35 -28
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/core/sb_cdp.py +20 -4
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/fixtures/base_case.py +22 -1
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/fixtures/shared_utils.py +23 -6
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/plugins/driver_manager.py +8 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/plugins/pytest_plugin.py +16 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/plugins/sb_manager.py +9 -1
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/plugins/selenium_plugin.py +16 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/undetected/cdp_driver/browser.py +3 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/undetected/cdp_driver/cdp_util.py +11 -3
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/undetected/cdp_driver/config.py +16 -2
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/undetected/cdp_driver/element.py +93 -50
- {seleniumbase-4.57.0 → seleniumbase-4.58.0/seleniumbase.egg-info}/PKG-INFO +61 -75
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase.egg-info/requires.txt +8 -14
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/setup.py +8 -10
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/.gitignore +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/LICENSE +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/MANIFEST.in +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/install.sh +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/mcp_servers/__init__.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/mcp_servers/server.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/pyproject.toml +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/pytest.ini +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/sbase/__init__.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/sbase/__main__.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/sbase/steps.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/__init__.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/__main__.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/behave/__init__.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/behave/behave_helper.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/behave/behave_sb.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/behave/steps.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/common/__init__.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/common/decorators.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/common/encryption.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/common/exceptions.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/common/obfuscate.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/common/unobfuscate.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/config/__init__.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/config/ad_block_list.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/config/proxy_list.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/config/settings.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/console_scripts/__init__.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/console_scripts/logo_helper.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/console_scripts/rich_helper.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/console_scripts/sb_behave_gui.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/console_scripts/sb_caseplans.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/console_scripts/sb_commander.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/console_scripts/sb_mkchart.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/console_scripts/sb_mkdir.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/console_scripts/sb_mkfile.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/console_scripts/sb_mkpres.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/console_scripts/sb_mkrec.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/console_scripts/sb_objectify.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/console_scripts/sb_print.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/console_scripts/sb_recorder.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/core/__init__.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/core/application_manager.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/core/capabilities_parser.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/core/colored_traceback.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/core/create_db_tables.sql +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/core/detect_b_ver.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/core/download_helper.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/core/encoded_images.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/core/jqc_helper.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/core/log_helper.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/core/mysql.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/core/nest_asyncio.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/core/proxy_helper.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/core/recorder_helper.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/core/report_helper.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/core/s3_manager.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/core/sb_driver.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/core/session_helper.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/core/settings_parser.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/core/style_sheet.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/core/testcase_manager.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/core/tour_helper.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/core/visual_helper.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/drivers/__init__.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/drivers/brave_drivers/__init__.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/drivers/cft_drivers/__init__.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/drivers/chromium_drivers/__init__.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/drivers/chs_drivers/__init__.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/drivers/comet_drivers/__init__.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/drivers/opera_drivers/__init__.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/extensions/__init__.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/extensions/ad_block.zip +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/extensions/disable_csp.zip +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/extensions/recorder.zip +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/extensions/sbase_ext.zip +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/fixtures/__init__.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/fixtures/constants.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/fixtures/css_to_xpath.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/fixtures/errors.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/fixtures/js_utils.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/fixtures/page_actions.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/fixtures/page_utils.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/fixtures/unittest_helper.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/fixtures/words.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/fixtures/xpath_to_css.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/js_code/__init__.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/js_code/active_css_js.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/js_code/live_js.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/js_code/recorder_js.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/masterqa/__init__.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/masterqa/master_qa.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/plugins/__init__.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/plugins/base_plugin.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/plugins/basic_test_info.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/plugins/db_reporting_plugin.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/plugins/page_source.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/plugins/s3_logging_plugin.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/plugins/screen_shots.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/resources/__init__.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/translate/__init__.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/translate/chinese.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/translate/dutch.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/translate/french.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/translate/italian.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/translate/japanese.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/translate/korean.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/translate/master_dict.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/translate/portuguese.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/translate/russian.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/translate/spanish.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/translate/translator.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/undetected/__init__.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/undetected/cdp.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/undetected/cdp_driver/__init__.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/undetected/cdp_driver/_contradict.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/undetected/cdp_driver/connection.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/undetected/cdp_driver/tab.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/undetected/dprocess.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/undetected/options.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/undetected/patcher.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/undetected/reactor.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/undetected/webelement.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/utilities/__init__.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/utilities/selenium_grid/__init__.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/utilities/selenium_grid/download_selenium_server.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/utilities/selenium_grid/font_color +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/utilities/selenium_grid/grid-hub +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/utilities/selenium_grid/grid-node +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/utilities/selenium_grid/grid_hub.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/utilities/selenium_grid/grid_node.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/utilities/selenium_grid/register-grid-node.bat +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/utilities/selenium_grid/register-grid-node.sh +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/utilities/selenium_grid/start-grid-hub.bat +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/utilities/selenium_grid/start-grid-hub.sh +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/utilities/selenium_ide/__init__.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase/utilities/selenium_ide/convert_ide.py +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase.egg-info/SOURCES.txt +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase.egg-info/dependency_links.txt +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase.egg-info/entry_points.txt +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/seleniumbase.egg-info/top_level.txt +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/setup.cfg +0 -0
- {seleniumbase-4.57.0 → seleniumbase-4.58.0}/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.58.0
|
|
4
4
|
Summary: SeleniumBase is a framework for web crawling, scraping, and testing. Supports pytest. CDP Mode adds stealth. Includes many tools.
|
|
5
5
|
Home-page: https://github.com/seleniumbase/SeleniumBase
|
|
6
6
|
Author: Michael Mintz
|
|
@@ -68,7 +68,7 @@ Requires-Dist: exceptiongroup>=1.3.1
|
|
|
68
68
|
Requires-Dist: websockets~=16.1.1; python_version == "3.10"
|
|
69
69
|
Requires-Dist: websockets>=17.4; python_version >= "3.11"
|
|
70
70
|
Requires-Dist: filelock==4.1.0; python_version == "3.10"
|
|
71
|
-
Requires-Dist: filelock>=4.2.
|
|
71
|
+
Requires-Dist: filelock>=4.2.10; python_version >= "3.11"
|
|
72
72
|
Requires-Dist: fasteners>=0.20
|
|
73
73
|
Requires-Dist: mycdp>=1.4.0
|
|
74
74
|
Requires-Dist: pynose>=1.5.5
|
|
@@ -85,7 +85,7 @@ Requires-Dist: pyyaml>=6.0.3
|
|
|
85
85
|
Requires-Dist: pygments>=2.20.1
|
|
86
86
|
Requires-Dist: pyreadline3>=3.5.4; platform_system == "Windows"
|
|
87
87
|
Requires-Dist: tabcompleter>=1.4.1
|
|
88
|
-
Requires-Dist: pdbp>=1.
|
|
88
|
+
Requires-Dist: pdbp>=1.9.0
|
|
89
89
|
Requires-Dist: idna>=3.20
|
|
90
90
|
Requires-Dist: charset-normalizer<4,>=3.5.2
|
|
91
91
|
Requires-Dist: urllib3<3,>=2.8.0
|
|
@@ -116,12 +116,12 @@ Requires-Dist: pytest-xdist==3.8.0
|
|
|
116
116
|
Requires-Dist: parameterized==0.9.0
|
|
117
117
|
Requires-Dist: behave==1.2.6
|
|
118
118
|
Requires-Dist: soupsieve~=2.10.0; python_version < "3.11.5"
|
|
119
|
-
Requires-Dist: soupsieve~=
|
|
119
|
+
Requires-Dist: soupsieve~=4.1.1; python_version >= "3.11.5"
|
|
120
120
|
Requires-Dist: beautifulsoup4~=4.15.0
|
|
121
|
-
Requires-Dist: pyotp~=2.
|
|
121
|
+
Requires-Dist: pyotp~=2.11.2
|
|
122
122
|
Requires-Dist: python-xlib==0.33; platform_system == "Linux"
|
|
123
123
|
Requires-Dist: PyAutoGUI>=0.9.54; platform_system == "Linux"
|
|
124
|
-
Requires-Dist: markdown-it-py==4.
|
|
124
|
+
Requires-Dist: markdown-it-py==4.3.0
|
|
125
125
|
Requires-Dist: mdurl==0.1.2
|
|
126
126
|
Requires-Dist: rich<16,>=15.0.0
|
|
127
127
|
Provides-Extra: allure
|
|
@@ -130,7 +130,7 @@ Requires-Dist: allure-python-commons>=2.16.0; extra == "allure"
|
|
|
130
130
|
Requires-Dist: allure-behave>=2.16.0; extra == "allure"
|
|
131
131
|
Provides-Extra: coverage
|
|
132
132
|
Requires-Dist: coverage>=7.16.2; python_version == "3.10" and extra == "coverage"
|
|
133
|
-
Requires-Dist: coverage>=7.17.
|
|
133
|
+
Requires-Dist: coverage>=7.17.3; python_version >= "3.11" and extra == "coverage"
|
|
134
134
|
Requires-Dist: pytest-cov>=7.1.0; extra == "coverage"
|
|
135
135
|
Provides-Extra: flake8
|
|
136
136
|
Requires-Dist: flake8==7.4.1; python_version == "3.10" and extra == "flake8"
|
|
@@ -157,14 +157,12 @@ Requires-Dist: pip-system-certs>=4.0; platform_system == "Windows" and extra ==
|
|
|
157
157
|
Provides-Extra: proxy
|
|
158
158
|
Requires-Dist: proxy.py==2.4.3; extra == "proxy"
|
|
159
159
|
Provides-Extra: playwright
|
|
160
|
-
Requires-Dist: playwright>=1.
|
|
160
|
+
Requires-Dist: playwright>=1.65.2; extra == "playwright"
|
|
161
161
|
Requires-Dist: greenlet>=3.5.6; extra == "playwright"
|
|
162
|
-
Requires-Dist: pyee>=13.0.1; python_version < "3.12" and extra == "playwright"
|
|
163
|
-
Requires-Dist: pyee>=14.0.0; python_version >= "3.12" and extra == "playwright"
|
|
164
162
|
Provides-Extra: pyautogui
|
|
165
163
|
Requires-Dist: PyAutoGUI>=0.9.54; platform_system != "Linux" and extra == "pyautogui"
|
|
166
164
|
Provides-Extra: uv
|
|
167
|
-
Requires-Dist: uv>=0.13.
|
|
165
|
+
Requires-Dist: uv>=0.13.8; extra == "uv"
|
|
168
166
|
Dynamic: author
|
|
169
167
|
Dynamic: author-email
|
|
170
168
|
Dynamic: classifier
|
|
@@ -189,19 +187,10 @@ Dynamic: summary
|
|
|
189
187
|
<meta property="og:image" content="https://seleniumbase.github.io/cdn/img/mac_sb_logo_5b.png" />
|
|
190
188
|
<link rel="icon" href="https://seleniumbase.github.io/img/logo7.png" />
|
|
191
189
|
|
|
192
|
-
<
|
|
193
|
-
|
|
194
|
-
<h3 align="center">APIs for Web Scraping, Browser Automation, and E2E Testing.<br /></h3>
|
|
195
|
-
|
|
196
|
-
<p align="center"><b align="center">Includes stealth options for bypassing bot-detection and CAPTCHAs.<br /></b></p>
|
|
197
|
-
|
|
198
|
-
<p align="center">
|
|
199
|
-
<a href="https://pypi.python.org/pypi/seleniumbase" target="_blank" rel="noopener"><img src="https://img.shields.io/pypi/v/seleniumbase.svg?style=flat-square&color=3399EE" alt="PyPI version" height="20" /></a> <a href="https://github.com/seleniumbase/SeleniumBase/actions" target="_blank" rel="noopener"><img src="https://img.shields.io/github/actions/workflow/status/seleniumbase/SeleniumBase/python-package.yml?branch=master&style=flat-square&label=CI" alt="SeleniumBase GitHub Actions" height="20" /></a> <a href="https://seleniumbase.io" target="_blank" rel="noopener"><img src="https://img.shields.io/badge/docs-seleniumbase.io-11BBAA.svg?style=flat-square" alt="SeleniumBase Docs" height="20" /></a> <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/LICENSE" target="_blank" rel="noopener"><img src="https://img.shields.io/badge/license-MIT-33A6C6.svg?style=flat-square" title="SeleniumBase" height="20" /></a> <a href="https://github.com/seleniumbase/SeleniumBase/tree/master/mcp_servers" target="_blank" rel="noopener"><img src="https://img.shields.io/badge/MCP-tool_info-7C6EE5?style=flat-square" height="20" /></a> <a href="https://pepy.tech/projects/seleniumbase?timeRange=threeMonths&category=version&includeCIDownloads=true&granularity=daily&viewType=line&versions=*" target="_blank" rel="noopener"><img src="https://static.pepy.tech/badge/seleniumbase" alt="SeleniumBase PyPI downloads" height="20" /></a><br />
|
|
200
|
-
<a href="https://www.youtube.com/playlist?list=PLp9uKicxkBc5UIlGi2BuE3aWC7JyXpD3m" target="_blank" rel="noopener"><img src="https://img.shields.io/badge/docs-📺-D844E8.svg?style=flat-square&logo=YouTube&logoColor=white&label=YouTube" alt="YouTube Channel" height="20" /></a> <a href="https://www.facebook.com/SeleniumBase/" target="_blank" rel="noopener"> <img src="https://img.shields.io/badge/Facebook-4K_followers-1877F2?style=flat-square&logo=facebook&logoColor=white" alt="SeleniumBase Facebook Followers" height="20" /></a> <a href="https://x.com/seleniumbase" target="_blank" rel="noopener"><img src="https://img.shields.io/badge/-1K_followers-1DA1F2?style=flat-square&logo=x&logoColor=white&labelColor=555555" alt="SeleniumBase X Followers" height="20" /></a> <a href="https://discord.gg/EdhQTn3EyE" target="_blank" rel="noopener"><img src="https://img.shields.io/discord/727927627830001734?style=flat-square&color=7289DA&label=Discord&logo=discord&logoColor=white" height="20" /></a> <a href="https://github.com/seleniumbase/SeleniumBase" target="_blank" rel="noopener"><img src="https://badgen.net/github/stars/seleniumbase/SeleniumBase" title="Stars" height="20" /></a>
|
|
201
|
-
</p>
|
|
190
|
+
<h3 align="center" class="hero__title"><a href="https://github.com/seleniumbase/SeleniumBase/"><img src="https://seleniumbase.github.io/cdn/img/nice_logo_8t.png" alt="SeleniumBase" title="SeleniumBase" width="450" /></a><br /><b>A Complete Browser Automation Experience:<br />Web Crawling / Testing / Scraping / Stealth</b></h3>
|
|
202
191
|
|
|
203
192
|
<p align="center">
|
|
204
|
-
<a href="https://
|
|
193
|
+
<a href="https://pypi.python.org/pypi/seleniumbase" target="_blank" rel="noopener"><img src="https://img.shields.io/pypi/v/seleniumbase.svg?style=flat-square&color=3399EE" alt="PyPI version" height="20" /></a> <a href="https://github.com/seleniumbase/SeleniumBase/actions" target="_blank" rel="noopener"><img src="https://flat.badgen.net/github/checks/seleniumbase/SeleniumBase/master?label=CI&" alt="CI Status" height="20" /></a> <a href="https://seleniumbase.io" target="_blank" rel="noopener"><img src="https://img.shields.io/badge/docs-seleniumbase.io-11BBAA.svg?style=flat-square" alt="SeleniumBase Docs" height="20" /></a> <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/LICENSE" target="_blank" rel="noopener"><img src="https://img.shields.io/badge/license-MIT-33A6C6.svg?style=flat-square" title="SeleniumBase" height="20" /></a><br /><a href="https://github.com/seleniumbase/SeleniumBase/tree/master/mcp_servers" target="_blank" rel="noopener"><img src="https://img.shields.io/badge/MCP-tool_info-7C6EE5?style=flat-square" height="20" /></a> <a href="https://pepy.tech/projects/seleniumbase?timeRange=threeMonths&category=version&includeCIDownloads=true&granularity=daily&viewType=line&versions=*" target="_blank" rel="noopener"><img src="https://static.pepy.tech/badge/seleniumbase" alt="SeleniumBase PyPI downloads" height="20" /></a> <a href="https://www.youtube.com/playlist?list=PLp9uKicxkBc5UIlGi2BuE3aWC7JyXpD3m" target="_blank" rel="noopener"><img src="https://img.shields.io/badge/docs-📺-D844E8.svg?style=flat-square&logo=YouTube&logoColor=white&label=YouTube" alt="YouTube Channel" height="20" /></a> <a href="https://github.com/seleniumbase/SeleniumBase" target="_blank" rel="noopener"><img src="https://badgen.net/github/stars/seleniumbase/SeleniumBase" title="Stars" height="20" /></a>
|
|
205
194
|
</p>
|
|
206
195
|
|
|
207
196
|
<p align="center">
|
|
@@ -210,16 +199,16 @@ Dynamic: summary
|
|
|
210
199
|
<a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/customizing_test_runs.md">🎛️ Options</a> |
|
|
211
200
|
<a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/ReadMe.md">📚 Examples</a> |
|
|
212
201
|
<a href="https://github.com/seleniumbase/SeleniumBase/blob/master/seleniumbase/console_scripts/ReadMe.md">💻 Scripts</a> |
|
|
213
|
-
<a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/locale_codes.md">🗾
|
|
202
|
+
<a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/locale_codes.md">🗾 Locales</a>
|
|
214
203
|
<br />
|
|
215
204
|
<a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/method_summary.md">📗 API</a> |
|
|
216
205
|
<a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/cdp_mode_methods.md">📘 Stealth API</a> |
|
|
217
|
-
<a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/syntax_formats.md"> 🔠
|
|
206
|
+
<a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/syntax_formats.md"> 🔠 Syntax Formats</a> |
|
|
218
207
|
<a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/recorder_mode.md">🔴 Recorder</a> |
|
|
219
208
|
<a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/example_logs/ReadMe.md">📊 Dashboard</a>
|
|
220
209
|
<br />
|
|
221
210
|
<a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/commander.md">🎖️ GUI</a> |
|
|
222
|
-
<a href="https://seleniumbase.io/demo_page">📰
|
|
211
|
+
<a href="https://seleniumbase.io/demo_page">📰 Test Page</a> |
|
|
223
212
|
<a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/uc_mode.md">👤 UC Mode</a> |
|
|
224
213
|
<a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/cdp_mode/ReadMe.md">🐙 CDP Mode</a> |
|
|
225
214
|
<a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/chart_maker/ReadMe.md">📶 Charts</a> |
|
|
@@ -232,60 +221,68 @@ Dynamic: summary
|
|
|
232
221
|
<a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/tour_examples/ReadMe.md">🚎 Tours</a>
|
|
233
222
|
<br />
|
|
234
223
|
<a href="https://github.com/seleniumbase/SeleniumBase/blob/master/mcp_servers/">🤖 MCP</a> |
|
|
235
|
-
<a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/js_package_manager.md">🟨 JS
|
|
224
|
+
<a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/js_package_manager.md">🟨 JS Tools</a> |
|
|
236
225
|
<a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/translations.md">🌏 Translator</a> |
|
|
237
226
|
<a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/presenter/ReadMe.md">🎞️ Presenter</a> |
|
|
238
227
|
<a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/visual_testing/ReadMe.md">🖼️ Visual</a> |
|
|
239
228
|
<a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/case_plans.md">🗂️ CPlans</a>
|
|
240
229
|
</p>
|
|
241
230
|
|
|
231
|
+
<h4>SeleniumBase is the professional toolkit for web automation activities. Built for testing websites, bypassing CAPTCHAs, enhancing productivity, completing tasks, and scaling your business.</h4>
|
|
232
|
+
|
|
242
233
|
--------
|
|
243
234
|
|
|
244
|
-
|
|
235
|
+
📚 Learn from [**over 200 examples** in **SeleniumBase/examples/**](https://github.com/seleniumbase/SeleniumBase/tree/master/examples).
|
|
236
|
+
|
|
237
|
+
<p align="left"><a href="https://github.com/seleniumbase/SeleniumBase/tree/master/examples" target="_blank" rel="noopener"><img src="https://seleniumbase.github.io/cdn/gif/google_search.gif" alt="SeleniumBase Google Search" title="SeleniumBase Google Search" width="480" /></a></p>
|
|
238
|
+
|
|
239
|
+
--------
|
|
240
|
+
|
|
241
|
+
<h3 align="left"><img src="https://seleniumbase.io/img/logo6.png" title="SeleniumBase" width="32" /> SeleniumBase Chromium architecture and modes:</h3>
|
|
242
|
+
|
|
243
|
+
<img src="https://seleniumbase.github.io/other/sb_architecture.png" width="600" style="max-width: 100% !important; height: auto !important;" alt="Stealthy architecture flowchart" />
|
|
244
|
+
|
|
245
|
+
> (*Note that "Regular Mode" also supports Safari/WebKit and Firefox/Gecko.*)
|
|
246
|
+
|
|
247
|
+
<ul>
|
|
248
|
+
<li>🐙 <a translate="no" href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/cdp_mode/ReadMe.md"><b>CDP Mode</b></a> <b>bypasses bot-detection with Chromium-based browsers.</b></li>
|
|
249
|
+
<li>🎭 <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/cdp_mode/playwright/ReadMe.md"><b><span translate="no">Stealthy Playwright Mode</span></b></a> <b>extends CDP Mode's stealth to Playwright.</b></li>
|
|
250
|
+
</ul>
|
|
251
|
+
|
|
252
|
+
--------
|
|
253
|
+
|
|
254
|
+
🧪 End-to-End Testing examples are located in [./examples/](https://github.com/seleniumbase/SeleniumBase/blob/master/examples).
|
|
255
|
+
|
|
256
|
+
🐙 Stealthy CDP Mode examples are located in [./examples/cdp_mode/](https://github.com/seleniumbase/SeleniumBase/tree/master/examples/cdp_mode).
|
|
257
|
+
|
|
258
|
+
🎭 Stealthy Playwright examples are located in [./examples/cdp_mode/playwright/](https://github.com/seleniumbase/SeleniumBase/blob/master/examples/cdp_mode/playwright/).
|
|
245
259
|
|
|
246
|
-
|
|
260
|
+
> [!NOTE]
|
|
261
|
+
> Examples that start with `test` run with **`pytest`**.<br />
|
|
262
|
+
> Other examples run directly with raw **`python`**.
|
|
247
263
|
|
|
248
264
|
--------
|
|
249
265
|
|
|
250
|
-
📝 [This example](https://github.com/seleniumbase/SeleniumBase/blob/master/examples/raw_cdp_mode.py) uses <b><code translate="no">seleniumbase</code></b> <b><code translate="no">sb_cdp</code></b> (*[Pure CDP Mode](https://github.com/seleniumbase/SeleniumBase/blob/master/examples/cdp_mode/ReadMe.md#Pure_CDP_Mode)*):<br /><em>(It
|
|
266
|
+
📝 [This example](https://github.com/seleniumbase/SeleniumBase/blob/master/examples/cdp_mode/raw_cdp_mode.py) uses <b><code translate="no">seleniumbase</code></b> <b><code translate="no">sb_cdp</code></b> (*[Pure CDP Mode](https://github.com/seleniumbase/SeleniumBase/blob/master/examples/cdp_mode/ReadMe.md#Pure_CDP_Mode)*):<br /><em>(It shows some basic methods and bypasses a Cloudflare Turnstile)</em>
|
|
251
267
|
|
|
252
268
|
```python
|
|
253
269
|
from seleniumbase import sb_cdp
|
|
254
270
|
|
|
255
271
|
sb = sb_cdp.Chrome() # Launch a stealth browser
|
|
256
|
-
sb.goto("https://browserscan.net/bot-detection")
|
|
257
|
-
sb.assert_element('strong:contains("Normal")')
|
|
258
|
-
sb.sleep(1)
|
|
259
|
-
|
|
260
|
-
sb.goto("https://bot.sannysoft.com/")
|
|
261
|
-
sb.assert_element(".passed")
|
|
262
|
-
sb.assert_element_not_visible(".failed")
|
|
263
|
-
sb.sleep(1)
|
|
264
|
-
|
|
265
272
|
sb.goto("https://www.planetminecraft.com/account")
|
|
266
|
-
sb.type('[name="email"]', "
|
|
273
|
+
sb.type('[name="email"]', "Test123")
|
|
267
274
|
sb.type('[name="password"]', "Pass")
|
|
268
|
-
sb.click("input#autologin")
|
|
269
|
-
sb.solve_captcha() #
|
|
275
|
+
sb.click("input#autologin") # Uncheck a checkbox
|
|
276
|
+
sb.solve_captcha() # (fallback if not automatic)
|
|
270
277
|
sb.assert_element('input[name="login"]')
|
|
271
278
|
sb.assert_element_not_visible("input[disabled]")
|
|
272
|
-
sb.sleep(1)
|
|
273
|
-
sb.quit()
|
|
279
|
+
sb.sleep(1) # (see the live demo more easily)
|
|
280
|
+
sb.quit()
|
|
274
281
|
```
|
|
275
282
|
|
|
276
|
-
<p align="
|
|
277
|
-
<img src="https://seleniumbase.github.io/
|
|
278
|
-
<br /><em>(
|
|
279
|
-
</p>
|
|
280
|
-
|
|
281
|
-
<p align="center">
|
|
282
|
-
<img src="https://seleniumbase.github.io/other/sannysoft_success.jpg" width="428" style="max-width: 100% !important; height: auto !important;" alt="All Sannysoft tests passed successfully" />
|
|
283
|
-
<br /><em>(All Sannysoft bot-detection tests passed successfully)</em>
|
|
284
|
-
</p>
|
|
285
|
-
|
|
286
|
-
<p align="center">
|
|
287
|
-
<img src="https://seleniumbase.github.io/other/pmc_captcha_2.png" width="530" style="max-width: 100% !important; height: auto !important;" alt="Cloudflare Turnstile bypassed successfully" />
|
|
288
|
-
<br /><em>(Cloudflare Turnstile bypassed successfully on Planet Minecraft)</em>
|
|
283
|
+
<p align="left">
|
|
284
|
+
<img src="https://seleniumbase.github.io/other/pmc_captcha_3.png" width="572" style="max-width: 100% !important; height: auto !important;" alt="Cloudflare Turnstile bypassed successfully" />
|
|
285
|
+
<br /><em>(Note: In this example, the click only unchecks the "Stay signed in" checkbox.)</em>
|
|
289
286
|
</p>
|
|
290
287
|
|
|
291
288
|
--------
|
|
@@ -296,7 +293,7 @@ sb.quit() # Quit browser before end-of-program
|
|
|
296
293
|
|
|
297
294
|
--------
|
|
298
295
|
|
|
299
|
-
<p align="left">📝 <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/cdp_mode/raw_cdp_yc_news.py" target="_blank" rel="noopener">This script</a>
|
|
296
|
+
<p align="left">📝 <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/cdp_mode/raw_cdp_yc_news.py" target="_blank" rel="noopener">This script</a> searches Hacker News via Algolia. Then prints items and saves to PDF:</p>
|
|
300
297
|
|
|
301
298
|
```python
|
|
302
299
|
from seleniumbase import sb_cdp
|
|
@@ -305,7 +302,9 @@ sb = sb_cdp.Chrome(fast=True)
|
|
|
305
302
|
sb.goto("https://hn.algolia.com/?query=seleniumbase")
|
|
306
303
|
elements = sb.find_elements("div.Story_title > a")
|
|
307
304
|
for element in elements:
|
|
308
|
-
print("
|
|
305
|
+
print("--> " + element.text)
|
|
306
|
+
sb.save_as_pdf("sb_news.pdf", folder="./downloaded_files/")
|
|
307
|
+
print("*** PDF saved to: ./downloaded_files/sb_news.pdf")
|
|
309
308
|
```
|
|
310
309
|
|
|
311
310
|
```
|
|
@@ -313,7 +312,7 @@ python raw_cdp_yc_news.py
|
|
|
313
312
|
```
|
|
314
313
|
|
|
315
314
|
<p align="left">
|
|
316
|
-
<img src="https://seleniumbase.github.io/other/
|
|
315
|
+
<img src="https://seleniumbase.github.io/other/yc_news_results_2.png" alt="SeleniumBase" width="510" style="max-width: 100% !important; height: auto !important;"/>
|
|
317
316
|
</p>
|
|
318
317
|
|
|
319
318
|
--------
|
|
@@ -342,14 +341,6 @@ python raw_gitlab.py
|
|
|
342
341
|
|
|
343
342
|
--------
|
|
344
343
|
|
|
345
|
-
🧪 End-to-End Testing examples are located in [./examples/](https://github.com/seleniumbase/SeleniumBase/blob/master/examples).
|
|
346
|
-
|
|
347
|
-
🐙 Stealthy CDP Mode examples are located in [./examples/cdp_mode/](https://github.com/seleniumbase/SeleniumBase/tree/master/examples/cdp_mode).
|
|
348
|
-
|
|
349
|
-
🎭 Stealthy Playwright examples are located in [./examples/cdp_mode/playwright/](https://github.com/seleniumbase/SeleniumBase/blob/master/examples/cdp_mode/playwright/).
|
|
350
|
-
|
|
351
|
-
--------
|
|
352
|
-
|
|
353
344
|
<h3 align="left">🌐 CLI Options for Supported Chromium Browsers</h3>
|
|
354
345
|
|
|
355
346
|
<p>💡 You can set which Chromium browser to use via command-line parameters:</p>
|
|
@@ -371,12 +362,6 @@ sb = sb_cdp.Chrome(use_chromium=True)
|
|
|
371
362
|
|
|
372
363
|
--------
|
|
373
364
|
|
|
374
|
-
<h3 align="left">⚙️ Stealthy architecture flowchart:</h3>
|
|
375
|
-
|
|
376
|
-
<img src="https://seleniumbase.github.io/other/sb_architecture.png" width="530" style="max-width: 100% !important; height: auto !important;" alt="Stealthy architecture flowchart" />
|
|
377
|
-
|
|
378
|
-
--------
|
|
379
|
-
|
|
380
365
|
<h3>🧪 Comprehensive E2E Testing with <code>pytest</code>:</h3>
|
|
381
366
|
|
|
382
367
|
<p align="left">📝 <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/test_get_swag.py" target="_blank" rel="noopener">This script</a> tests an e-commerce site: (Runs with <b><code>pytest</code></b>):</p>
|
|
@@ -465,7 +450,7 @@ pytest test_demo_site.py
|
|
|
465
450
|
|
|
466
451
|
--------
|
|
467
452
|
|
|
468
|
-
<p align="left"><a href="https://github.com/seleniumbase/SeleniumBase/"><img src="https://seleniumbase.github.io/cdn/img/super_logo_sb3.png" alt="SeleniumBase" title="SeleniumBase" width="
|
|
453
|
+
<p align="left"><a href="https://github.com/seleniumbase/SeleniumBase/"><img src="https://seleniumbase.github.io/cdn/img/super_logo_sb3.png" alt="SeleniumBase" title="SeleniumBase" width="248" /></a></p>
|
|
469
454
|
|
|
470
455
|
<blockquote>
|
|
471
456
|
<p dir="auto"><strong>Explore the README:</strong></p>
|
|
@@ -1019,6 +1004,7 @@ pytest test_coffee_cart.py --trace
|
|
|
1019
1004
|
--rs | --reuse-session # (Reuse browser session for all tests.)
|
|
1020
1005
|
--rcs | --reuse-class-session # (Reuse session for tests in class.)
|
|
1021
1006
|
--crumbs # (Delete all cookies between tests reusing a session.)
|
|
1007
|
+
--no-tt # (Skips "--test-type" when using Proxy Mode. Adds stealth.)
|
|
1022
1008
|
--disable-beforeunload # (Disable the "beforeunload" event on Chrome.)
|
|
1023
1009
|
--window-position=X,Y # (Set the browser's starting window position.)
|
|
1024
1010
|
--window-size=WIDTH,HEIGHT # (Set the browser's starting window size.)
|
|
@@ -1695,7 +1681,7 @@ pytest --reruns=1 --reruns-delay=1
|
|
|
1695
1681
|
|
|
1696
1682
|
<p><div><b><a href="https://github.com/mdmintz" target="_blank" rel="noopener">https://github.com/mdmintz</a></b></div></p>
|
|
1697
1683
|
|
|
1698
|
-
<div><a href="https://github.com/seleniumbase/SeleniumBase/"><img src="https://seleniumbase.github.io/cdn/img/
|
|
1684
|
+
<div><a href="https://github.com/seleniumbase/SeleniumBase/"><img src="https://seleniumbase.github.io/cdn/img/super_logo_sb6.png" title="SeleniumBase" width="310" style="max-width: 100% !important; height: auto !important;" /></a></div>
|
|
1699
1685
|
<div><a href="https://github.com/seleniumbase/SeleniumBase"><img src="https://img.shields.io/badge/tested%20with-SeleniumBase-04C38E.svg" alt="Tested with SeleniumBase" /></a> <img src="https://views.whatilearened.today/views/github/seleniumbase/SeleniumBase.svg" width="98px" height="20px" alt="Views" /></div>
|
|
1700
1686
|
<div><a href="https://seleniumbase.io"><img src="https://img.shields.io/badge/docs-seleniumbase.io-11BBAA.svg" alt="SeleniumBase Docs" height="20" /></a> <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/LICENSE"><img src="https://img.shields.io/badge/license-MIT-22BBCC.svg" title="SeleniumBase" height="20" /></a> </div>
|
|
1701
1687
|
<div align="left"></div>
|
|
@@ -8,19 +8,10 @@
|
|
|
8
8
|
<meta property="og:image" content="https://seleniumbase.github.io/cdn/img/mac_sb_logo_5b.png" />
|
|
9
9
|
<link rel="icon" href="https://seleniumbase.github.io/img/logo7.png" />
|
|
10
10
|
|
|
11
|
-
<
|
|
12
|
-
|
|
13
|
-
<h3 align="center">APIs for Web Scraping, Browser Automation, and E2E Testing.<br /></h3>
|
|
14
|
-
|
|
15
|
-
<p align="center"><b align="center">Includes stealth options for bypassing bot-detection and CAPTCHAs.<br /></b></p>
|
|
16
|
-
|
|
17
|
-
<p align="center">
|
|
18
|
-
<a href="https://pypi.python.org/pypi/seleniumbase" target="_blank" rel="noopener"><img src="https://img.shields.io/pypi/v/seleniumbase.svg?style=flat-square&color=3399EE" alt="PyPI version" height="20" /></a> <a href="https://github.com/seleniumbase/SeleniumBase/actions" target="_blank" rel="noopener"><img src="https://img.shields.io/github/actions/workflow/status/seleniumbase/SeleniumBase/python-package.yml?branch=master&style=flat-square&label=CI" alt="SeleniumBase GitHub Actions" height="20" /></a> <a href="https://seleniumbase.io" target="_blank" rel="noopener"><img src="https://img.shields.io/badge/docs-seleniumbase.io-11BBAA.svg?style=flat-square" alt="SeleniumBase Docs" height="20" /></a> <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/LICENSE" target="_blank" rel="noopener"><img src="https://img.shields.io/badge/license-MIT-33A6C6.svg?style=flat-square" title="SeleniumBase" height="20" /></a> <a href="https://github.com/seleniumbase/SeleniumBase/tree/master/mcp_servers" target="_blank" rel="noopener"><img src="https://img.shields.io/badge/MCP-tool_info-7C6EE5?style=flat-square" height="20" /></a> <a href="https://pepy.tech/projects/seleniumbase?timeRange=threeMonths&category=version&includeCIDownloads=true&granularity=daily&viewType=line&versions=*" target="_blank" rel="noopener"><img src="https://static.pepy.tech/badge/seleniumbase" alt="SeleniumBase PyPI downloads" height="20" /></a><br />
|
|
19
|
-
<a href="https://www.youtube.com/playlist?list=PLp9uKicxkBc5UIlGi2BuE3aWC7JyXpD3m" target="_blank" rel="noopener"><img src="https://img.shields.io/badge/docs-📺-D844E8.svg?style=flat-square&logo=YouTube&logoColor=white&label=YouTube" alt="YouTube Channel" height="20" /></a> <a href="https://www.facebook.com/SeleniumBase/" target="_blank" rel="noopener"> <img src="https://img.shields.io/badge/Facebook-4K_followers-1877F2?style=flat-square&logo=facebook&logoColor=white" alt="SeleniumBase Facebook Followers" height="20" /></a> <a href="https://x.com/seleniumbase" target="_blank" rel="noopener"><img src="https://img.shields.io/badge/-1K_followers-1DA1F2?style=flat-square&logo=x&logoColor=white&labelColor=555555" alt="SeleniumBase X Followers" height="20" /></a> <a href="https://discord.gg/EdhQTn3EyE" target="_blank" rel="noopener"><img src="https://img.shields.io/discord/727927627830001734?style=flat-square&color=7289DA&label=Discord&logo=discord&logoColor=white" height="20" /></a> <a href="https://github.com/seleniumbase/SeleniumBase" target="_blank" rel="noopener"><img src="https://badgen.net/github/stars/seleniumbase/SeleniumBase" title="Stars" height="20" /></a>
|
|
20
|
-
</p>
|
|
11
|
+
<h3 align="center" class="hero__title"><a href="https://github.com/seleniumbase/SeleniumBase/"><img src="https://seleniumbase.github.io/cdn/img/nice_logo_8t.png" alt="SeleniumBase" title="SeleniumBase" width="450" /></a><br /><b>A Complete Browser Automation Experience:<br />Web Crawling / Testing / Scraping / Stealth</b></h3>
|
|
21
12
|
|
|
22
13
|
<p align="center">
|
|
23
|
-
<a href="https://
|
|
14
|
+
<a href="https://pypi.python.org/pypi/seleniumbase" target="_blank" rel="noopener"><img src="https://img.shields.io/pypi/v/seleniumbase.svg?style=flat-square&color=3399EE" alt="PyPI version" height="20" /></a> <a href="https://github.com/seleniumbase/SeleniumBase/actions" target="_blank" rel="noopener"><img src="https://flat.badgen.net/github/checks/seleniumbase/SeleniumBase/master?label=CI&" alt="CI Status" height="20" /></a> <a href="https://seleniumbase.io" target="_blank" rel="noopener"><img src="https://img.shields.io/badge/docs-seleniumbase.io-11BBAA.svg?style=flat-square" alt="SeleniumBase Docs" height="20" /></a> <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/LICENSE" target="_blank" rel="noopener"><img src="https://img.shields.io/badge/license-MIT-33A6C6.svg?style=flat-square" title="SeleniumBase" height="20" /></a><br /><a href="https://github.com/seleniumbase/SeleniumBase/tree/master/mcp_servers" target="_blank" rel="noopener"><img src="https://img.shields.io/badge/MCP-tool_info-7C6EE5?style=flat-square" height="20" /></a> <a href="https://pepy.tech/projects/seleniumbase?timeRange=threeMonths&category=version&includeCIDownloads=true&granularity=daily&viewType=line&versions=*" target="_blank" rel="noopener"><img src="https://static.pepy.tech/badge/seleniumbase" alt="SeleniumBase PyPI downloads" height="20" /></a> <a href="https://www.youtube.com/playlist?list=PLp9uKicxkBc5UIlGi2BuE3aWC7JyXpD3m" target="_blank" rel="noopener"><img src="https://img.shields.io/badge/docs-📺-D844E8.svg?style=flat-square&logo=YouTube&logoColor=white&label=YouTube" alt="YouTube Channel" height="20" /></a> <a href="https://github.com/seleniumbase/SeleniumBase" target="_blank" rel="noopener"><img src="https://badgen.net/github/stars/seleniumbase/SeleniumBase" title="Stars" height="20" /></a>
|
|
24
15
|
</p>
|
|
25
16
|
|
|
26
17
|
<p align="center">
|
|
@@ -29,16 +20,16 @@
|
|
|
29
20
|
<a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/customizing_test_runs.md">🎛️ Options</a> |
|
|
30
21
|
<a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/ReadMe.md">📚 Examples</a> |
|
|
31
22
|
<a href="https://github.com/seleniumbase/SeleniumBase/blob/master/seleniumbase/console_scripts/ReadMe.md">💻 Scripts</a> |
|
|
32
|
-
<a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/locale_codes.md">🗾
|
|
23
|
+
<a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/locale_codes.md">🗾 Locales</a>
|
|
33
24
|
<br />
|
|
34
25
|
<a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/method_summary.md">📗 API</a> |
|
|
35
26
|
<a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/cdp_mode_methods.md">📘 Stealth API</a> |
|
|
36
|
-
<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/syntax_formats.md"> 🔠 Syntax Formats</a> |
|
|
37
28
|
<a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/recorder_mode.md">🔴 Recorder</a> |
|
|
38
29
|
<a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/example_logs/ReadMe.md">📊 Dashboard</a>
|
|
39
30
|
<br />
|
|
40
31
|
<a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/commander.md">🎖️ GUI</a> |
|
|
41
|
-
<a href="https://seleniumbase.io/demo_page">📰
|
|
32
|
+
<a href="https://seleniumbase.io/demo_page">📰 Test Page</a> |
|
|
42
33
|
<a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/uc_mode.md">👤 UC Mode</a> |
|
|
43
34
|
<a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/cdp_mode/ReadMe.md">🐙 CDP Mode</a> |
|
|
44
35
|
<a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/chart_maker/ReadMe.md">📶 Charts</a> |
|
|
@@ -51,60 +42,68 @@
|
|
|
51
42
|
<a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/tour_examples/ReadMe.md">🚎 Tours</a>
|
|
52
43
|
<br />
|
|
53
44
|
<a href="https://github.com/seleniumbase/SeleniumBase/blob/master/mcp_servers/">🤖 MCP</a> |
|
|
54
|
-
<a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/js_package_manager.md">🟨 JS
|
|
45
|
+
<a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/js_package_manager.md">🟨 JS Tools</a> |
|
|
55
46
|
<a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/translations.md">🌏 Translator</a> |
|
|
56
47
|
<a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/presenter/ReadMe.md">🎞️ Presenter</a> |
|
|
57
48
|
<a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/visual_testing/ReadMe.md">🖼️ Visual</a> |
|
|
58
49
|
<a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/case_plans.md">🗂️ CPlans</a>
|
|
59
50
|
</p>
|
|
60
51
|
|
|
52
|
+
<h4>SeleniumBase is the professional toolkit for web automation activities. Built for testing websites, bypassing CAPTCHAs, enhancing productivity, completing tasks, and scaling your business.</h4>
|
|
53
|
+
|
|
61
54
|
--------
|
|
62
55
|
|
|
63
|
-
|
|
56
|
+
📚 Learn from [**over 200 examples** in **SeleniumBase/examples/**](https://github.com/seleniumbase/SeleniumBase/tree/master/examples).
|
|
57
|
+
|
|
58
|
+
<p align="left"><a href="https://github.com/seleniumbase/SeleniumBase/tree/master/examples" target="_blank" rel="noopener"><img src="https://seleniumbase.github.io/cdn/gif/google_search.gif" alt="SeleniumBase Google Search" title="SeleniumBase Google Search" width="480" /></a></p>
|
|
59
|
+
|
|
60
|
+
--------
|
|
61
|
+
|
|
62
|
+
<h3 align="left"><img src="https://seleniumbase.io/img/logo6.png" title="SeleniumBase" width="32" /> SeleniumBase Chromium architecture and modes:</h3>
|
|
63
|
+
|
|
64
|
+
<img src="https://seleniumbase.github.io/other/sb_architecture.png" width="600" style="max-width: 100% !important; height: auto !important;" alt="Stealthy architecture flowchart" />
|
|
65
|
+
|
|
66
|
+
> (*Note that "Regular Mode" also supports Safari/WebKit and Firefox/Gecko.*)
|
|
67
|
+
|
|
68
|
+
<ul>
|
|
69
|
+
<li>🐙 <a translate="no" href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/cdp_mode/ReadMe.md"><b>CDP Mode</b></a> <b>bypasses bot-detection with Chromium-based browsers.</b></li>
|
|
70
|
+
<li>🎭 <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/cdp_mode/playwright/ReadMe.md"><b><span translate="no">Stealthy Playwright Mode</span></b></a> <b>extends CDP Mode's stealth to Playwright.</b></li>
|
|
71
|
+
</ul>
|
|
72
|
+
|
|
73
|
+
--------
|
|
74
|
+
|
|
75
|
+
🧪 End-to-End Testing examples are located in [./examples/](https://github.com/seleniumbase/SeleniumBase/blob/master/examples).
|
|
76
|
+
|
|
77
|
+
🐙 Stealthy CDP Mode examples are located in [./examples/cdp_mode/](https://github.com/seleniumbase/SeleniumBase/tree/master/examples/cdp_mode).
|
|
78
|
+
|
|
79
|
+
🎭 Stealthy Playwright examples are located in [./examples/cdp_mode/playwright/](https://github.com/seleniumbase/SeleniumBase/blob/master/examples/cdp_mode/playwright/).
|
|
64
80
|
|
|
65
|
-
|
|
81
|
+
> [!NOTE]
|
|
82
|
+
> Examples that start with `test` run with **`pytest`**.<br />
|
|
83
|
+
> Other examples run directly with raw **`python`**.
|
|
66
84
|
|
|
67
85
|
--------
|
|
68
86
|
|
|
69
|
-
📝 [This example](https://github.com/seleniumbase/SeleniumBase/blob/master/examples/raw_cdp_mode.py) uses <b><code translate="no">seleniumbase</code></b> <b><code translate="no">sb_cdp</code></b> (*[Pure CDP Mode](https://github.com/seleniumbase/SeleniumBase/blob/master/examples/cdp_mode/ReadMe.md#Pure_CDP_Mode)*):<br /><em>(It
|
|
87
|
+
📝 [This example](https://github.com/seleniumbase/SeleniumBase/blob/master/examples/cdp_mode/raw_cdp_mode.py) uses <b><code translate="no">seleniumbase</code></b> <b><code translate="no">sb_cdp</code></b> (*[Pure CDP Mode](https://github.com/seleniumbase/SeleniumBase/blob/master/examples/cdp_mode/ReadMe.md#Pure_CDP_Mode)*):<br /><em>(It shows some basic methods and bypasses a Cloudflare Turnstile)</em>
|
|
70
88
|
|
|
71
89
|
```python
|
|
72
90
|
from seleniumbase import sb_cdp
|
|
73
91
|
|
|
74
92
|
sb = sb_cdp.Chrome() # Launch a stealth browser
|
|
75
|
-
sb.goto("https://browserscan.net/bot-detection")
|
|
76
|
-
sb.assert_element('strong:contains("Normal")')
|
|
77
|
-
sb.sleep(1)
|
|
78
|
-
|
|
79
|
-
sb.goto("https://bot.sannysoft.com/")
|
|
80
|
-
sb.assert_element(".passed")
|
|
81
|
-
sb.assert_element_not_visible(".failed")
|
|
82
|
-
sb.sleep(1)
|
|
83
|
-
|
|
84
93
|
sb.goto("https://www.planetminecraft.com/account")
|
|
85
|
-
sb.type('[name="email"]', "
|
|
94
|
+
sb.type('[name="email"]', "Test123")
|
|
86
95
|
sb.type('[name="password"]', "Pass")
|
|
87
|
-
sb.click("input#autologin")
|
|
88
|
-
sb.solve_captcha() #
|
|
96
|
+
sb.click("input#autologin") # Uncheck a checkbox
|
|
97
|
+
sb.solve_captcha() # (fallback if not automatic)
|
|
89
98
|
sb.assert_element('input[name="login"]')
|
|
90
99
|
sb.assert_element_not_visible("input[disabled]")
|
|
91
|
-
sb.sleep(1)
|
|
92
|
-
sb.quit()
|
|
100
|
+
sb.sleep(1) # (see the live demo more easily)
|
|
101
|
+
sb.quit()
|
|
93
102
|
```
|
|
94
103
|
|
|
95
|
-
<p align="
|
|
96
|
-
<img src="https://seleniumbase.github.io/
|
|
97
|
-
<br /><em>(
|
|
98
|
-
</p>
|
|
99
|
-
|
|
100
|
-
<p align="center">
|
|
101
|
-
<img src="https://seleniumbase.github.io/other/sannysoft_success.jpg" width="428" style="max-width: 100% !important; height: auto !important;" alt="All Sannysoft tests passed successfully" />
|
|
102
|
-
<br /><em>(All Sannysoft bot-detection tests passed successfully)</em>
|
|
103
|
-
</p>
|
|
104
|
-
|
|
105
|
-
<p align="center">
|
|
106
|
-
<img src="https://seleniumbase.github.io/other/pmc_captcha_2.png" width="530" style="max-width: 100% !important; height: auto !important;" alt="Cloudflare Turnstile bypassed successfully" />
|
|
107
|
-
<br /><em>(Cloudflare Turnstile bypassed successfully on Planet Minecraft)</em>
|
|
104
|
+
<p align="left">
|
|
105
|
+
<img src="https://seleniumbase.github.io/other/pmc_captcha_3.png" width="572" style="max-width: 100% !important; height: auto !important;" alt="Cloudflare Turnstile bypassed successfully" />
|
|
106
|
+
<br /><em>(Note: In this example, the click only unchecks the "Stay signed in" checkbox.)</em>
|
|
108
107
|
</p>
|
|
109
108
|
|
|
110
109
|
--------
|
|
@@ -115,7 +114,7 @@ sb.quit() # Quit browser before end-of-program
|
|
|
115
114
|
|
|
116
115
|
--------
|
|
117
116
|
|
|
118
|
-
<p align="left">📝 <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/cdp_mode/raw_cdp_yc_news.py" target="_blank" rel="noopener">This script</a>
|
|
117
|
+
<p align="left">📝 <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/cdp_mode/raw_cdp_yc_news.py" target="_blank" rel="noopener">This script</a> searches Hacker News via Algolia. Then prints items and saves to PDF:</p>
|
|
119
118
|
|
|
120
119
|
```python
|
|
121
120
|
from seleniumbase import sb_cdp
|
|
@@ -124,7 +123,9 @@ sb = sb_cdp.Chrome(fast=True)
|
|
|
124
123
|
sb.goto("https://hn.algolia.com/?query=seleniumbase")
|
|
125
124
|
elements = sb.find_elements("div.Story_title > a")
|
|
126
125
|
for element in elements:
|
|
127
|
-
print("
|
|
126
|
+
print("--> " + element.text)
|
|
127
|
+
sb.save_as_pdf("sb_news.pdf", folder="./downloaded_files/")
|
|
128
|
+
print("*** PDF saved to: ./downloaded_files/sb_news.pdf")
|
|
128
129
|
```
|
|
129
130
|
|
|
130
131
|
```
|
|
@@ -132,7 +133,7 @@ python raw_cdp_yc_news.py
|
|
|
132
133
|
```
|
|
133
134
|
|
|
134
135
|
<p align="left">
|
|
135
|
-
<img src="https://seleniumbase.github.io/other/
|
|
136
|
+
<img src="https://seleniumbase.github.io/other/yc_news_results_2.png" alt="SeleniumBase" width="510" style="max-width: 100% !important; height: auto !important;"/>
|
|
136
137
|
</p>
|
|
137
138
|
|
|
138
139
|
--------
|
|
@@ -161,14 +162,6 @@ python raw_gitlab.py
|
|
|
161
162
|
|
|
162
163
|
--------
|
|
163
164
|
|
|
164
|
-
🧪 End-to-End Testing examples are located in [./examples/](https://github.com/seleniumbase/SeleniumBase/blob/master/examples).
|
|
165
|
-
|
|
166
|
-
🐙 Stealthy CDP Mode examples are located in [./examples/cdp_mode/](https://github.com/seleniumbase/SeleniumBase/tree/master/examples/cdp_mode).
|
|
167
|
-
|
|
168
|
-
🎭 Stealthy Playwright examples are located in [./examples/cdp_mode/playwright/](https://github.com/seleniumbase/SeleniumBase/blob/master/examples/cdp_mode/playwright/).
|
|
169
|
-
|
|
170
|
-
--------
|
|
171
|
-
|
|
172
165
|
<h3 align="left">🌐 CLI Options for Supported Chromium Browsers</h3>
|
|
173
166
|
|
|
174
167
|
<p>💡 You can set which Chromium browser to use via command-line parameters:</p>
|
|
@@ -190,12 +183,6 @@ sb = sb_cdp.Chrome(use_chromium=True)
|
|
|
190
183
|
|
|
191
184
|
--------
|
|
192
185
|
|
|
193
|
-
<h3 align="left">⚙️ Stealthy architecture flowchart:</h3>
|
|
194
|
-
|
|
195
|
-
<img src="https://seleniumbase.github.io/other/sb_architecture.png" width="530" style="max-width: 100% !important; height: auto !important;" alt="Stealthy architecture flowchart" />
|
|
196
|
-
|
|
197
|
-
--------
|
|
198
|
-
|
|
199
186
|
<h3>🧪 Comprehensive E2E Testing with <code>pytest</code>:</h3>
|
|
200
187
|
|
|
201
188
|
<p align="left">📝 <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/test_get_swag.py" target="_blank" rel="noopener">This script</a> tests an e-commerce site: (Runs with <b><code>pytest</code></b>):</p>
|
|
@@ -284,7 +271,7 @@ pytest test_demo_site.py
|
|
|
284
271
|
|
|
285
272
|
--------
|
|
286
273
|
|
|
287
|
-
<p align="left"><a href="https://github.com/seleniumbase/SeleniumBase/"><img src="https://seleniumbase.github.io/cdn/img/super_logo_sb3.png" alt="SeleniumBase" title="SeleniumBase" width="
|
|
274
|
+
<p align="left"><a href="https://github.com/seleniumbase/SeleniumBase/"><img src="https://seleniumbase.github.io/cdn/img/super_logo_sb3.png" alt="SeleniumBase" title="SeleniumBase" width="248" /></a></p>
|
|
288
275
|
|
|
289
276
|
<blockquote>
|
|
290
277
|
<p dir="auto"><strong>Explore the README:</strong></p>
|
|
@@ -838,6 +825,7 @@ pytest test_coffee_cart.py --trace
|
|
|
838
825
|
--rs | --reuse-session # (Reuse browser session for all tests.)
|
|
839
826
|
--rcs | --reuse-class-session # (Reuse session for tests in class.)
|
|
840
827
|
--crumbs # (Delete all cookies between tests reusing a session.)
|
|
828
|
+
--no-tt # (Skips "--test-type" when using Proxy Mode. Adds stealth.)
|
|
841
829
|
--disable-beforeunload # (Disable the "beforeunload" event on Chrome.)
|
|
842
830
|
--window-position=X,Y # (Set the browser's starting window position.)
|
|
843
831
|
--window-size=WIDTH,HEIGHT # (Set the browser's starting window size.)
|
|
@@ -1514,7 +1502,7 @@ pytest --reruns=1 --reruns-delay=1
|
|
|
1514
1502
|
|
|
1515
1503
|
<p><div><b><a href="https://github.com/mdmintz" target="_blank" rel="noopener">https://github.com/mdmintz</a></b></div></p>
|
|
1516
1504
|
|
|
1517
|
-
<div><a href="https://github.com/seleniumbase/SeleniumBase/"><img src="https://seleniumbase.github.io/cdn/img/
|
|
1505
|
+
<div><a href="https://github.com/seleniumbase/SeleniumBase/"><img src="https://seleniumbase.github.io/cdn/img/super_logo_sb6.png" title="SeleniumBase" width="310" style="max-width: 100% !important; height: auto !important;" /></a></div>
|
|
1518
1506
|
<div><a href="https://github.com/seleniumbase/SeleniumBase"><img src="https://img.shields.io/badge/tested%20with-SeleniumBase-04C38E.svg" alt="Tested with SeleniumBase" /></a> <img src="https://views.whatilearened.today/views/github/seleniumbase/SeleniumBase.svg" width="98px" height="20px" alt="Views" /></div>
|
|
1519
1507
|
<div><a href="https://seleniumbase.io"><img src="https://img.shields.io/badge/docs-seleniumbase.io-11BBAA.svg" alt="SeleniumBase Docs" height="20" /></a> <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/LICENSE"><img src="https://img.shields.io/badge/license-MIT-22BBCC.svg" title="SeleniumBase" height="20" /></a> </div>
|
|
1520
1508
|
<div align="left"></div>
|
|
@@ -8,7 +8,7 @@ exceptiongroup>=1.3.1
|
|
|
8
8
|
websockets~=16.1.1;python_version=="3.10"
|
|
9
9
|
websockets>=17.4;python_version>="3.11"
|
|
10
10
|
filelock==4.1.0;python_version=="3.10"
|
|
11
|
-
filelock>=4.2.
|
|
11
|
+
filelock>=4.2.10;python_version>="3.11"
|
|
12
12
|
fasteners>=0.20
|
|
13
13
|
mycdp>=1.4.0
|
|
14
14
|
pynose>=1.5.5
|
|
@@ -25,7 +25,7 @@ pyyaml>=6.0.3
|
|
|
25
25
|
pygments>=2.20.1
|
|
26
26
|
pyreadline3>=3.5.4;platform_system=="Windows"
|
|
27
27
|
tabcompleter>=1.4.1
|
|
28
|
-
pdbp>=1.
|
|
28
|
+
pdbp>=1.9.0
|
|
29
29
|
idna>=3.20
|
|
30
30
|
charset-normalizer>=3.5.2,<4
|
|
31
31
|
urllib3>=2.8.0,<3
|
|
@@ -56,12 +56,12 @@ pytest-xdist==3.8.0
|
|
|
56
56
|
parameterized==0.9.0
|
|
57
57
|
behave==1.2.6
|
|
58
58
|
soupsieve~=2.10.0;python_version<"3.11.5"
|
|
59
|
-
soupsieve~=
|
|
59
|
+
soupsieve~=4.1.1;python_version>="3.11.5"
|
|
60
60
|
beautifulsoup4~=4.15.0
|
|
61
|
-
pyotp~=2.
|
|
61
|
+
pyotp~=2.11.2
|
|
62
62
|
python-xlib==0.33;platform_system=="Linux"
|
|
63
63
|
PyAutoGUI>=0.9.54;platform_system=="Linux"
|
|
64
|
-
markdown-it-py==4.
|
|
64
|
+
markdown-it-py==4.3.0
|
|
65
65
|
mdurl==0.1.2
|
|
66
66
|
rich>=15.0.0,<16
|
|
67
67
|
|
|
@@ -69,7 +69,7 @@ rich>=15.0.0,<16
|
|
|
69
69
|
# ("pip install -r requirements.txt" also installs this, but "pip install -e ." won't.)
|
|
70
70
|
|
|
71
71
|
coverage>=7.16.2;python_version=="3.10"
|
|
72
|
-
coverage>=7.17.
|
|
72
|
+
coverage>=7.17.3;python_version>="3.11"
|
|
73
73
|
pytest-cov>=7.1.0
|
|
74
74
|
flake8==7.4.1;python_version=="3.10"
|
|
75
75
|
flake8==7.5.0;python_version>="3.11"
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
# seleniumbase package
|
|
2
|
-
__version__ = "4.
|
|
2
|
+
__version__ = "4.58.0"
|