seleniumbase 4.56.4__tar.gz → 4.56.5__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.56.4/seleniumbase.egg-info → seleniumbase-4.56.5}/PKG-INFO +34 -52
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/README.md +28 -48
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/requirements.txt +4 -2
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/__version__.py +1 -1
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/fixtures/base_case.py +1 -1
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/fixtures/page_utils.py +1 -1
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/undetected/cdp_driver/element.py +2 -1
- {seleniumbase-4.56.4 → seleniumbase-4.56.5/seleniumbase.egg-info}/PKG-INFO +34 -52
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase.egg-info/requires.txt +9 -3
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/setup.py +6 -4
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/.gitignore +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/LICENSE +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/MANIFEST.in +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/install.sh +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/mcp_servers/__init__.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/mcp_servers/server.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/pyproject.toml +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/pytest.ini +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/sbase/__init__.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/sbase/__main__.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/sbase/steps.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/__init__.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/__main__.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/behave/__init__.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/behave/behave_helper.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/behave/behave_sb.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/behave/steps.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/common/__init__.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/common/decorators.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/common/encryption.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/common/exceptions.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/common/obfuscate.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/common/unobfuscate.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/config/__init__.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/config/ad_block_list.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/config/proxy_list.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/config/settings.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/console_scripts/__init__.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/console_scripts/logo_helper.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/console_scripts/rich_helper.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/console_scripts/run.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/console_scripts/sb_behave_gui.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/console_scripts/sb_caseplans.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/console_scripts/sb_commander.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/console_scripts/sb_install.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/console_scripts/sb_mkchart.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/console_scripts/sb_mkdir.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/console_scripts/sb_mkfile.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/console_scripts/sb_mkpres.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/console_scripts/sb_mkrec.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/console_scripts/sb_objectify.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/console_scripts/sb_print.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/console_scripts/sb_recorder.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/core/__init__.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/core/application_manager.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/core/browser_launcher.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/core/capabilities_parser.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/core/colored_traceback.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/core/create_db_tables.sql +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/core/detect_b_ver.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/core/download_helper.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/core/encoded_images.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/core/jqc_helper.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/core/log_helper.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/core/mysql.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/core/nest_asyncio.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/core/proxy_helper.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/core/recorder_helper.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/core/report_helper.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/core/s3_manager.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/core/sb_cdp.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/core/sb_driver.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/core/session_helper.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/core/settings_parser.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/core/style_sheet.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/core/testcase_manager.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/core/tour_helper.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/core/visual_helper.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/drivers/__init__.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/drivers/brave_drivers/__init__.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/drivers/cft_drivers/__init__.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/drivers/chromium_drivers/__init__.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/drivers/chs_drivers/__init__.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/drivers/comet_drivers/__init__.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/drivers/opera_drivers/__init__.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/extensions/__init__.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/extensions/ad_block.zip +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/extensions/disable_csp.zip +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/extensions/recorder.zip +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/extensions/sbase_ext.zip +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/fixtures/__init__.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/fixtures/constants.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/fixtures/css_to_xpath.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/fixtures/errors.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/fixtures/js_utils.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/fixtures/page_actions.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/fixtures/shared_utils.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/fixtures/unittest_helper.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/fixtures/words.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/fixtures/xpath_to_css.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/js_code/__init__.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/js_code/active_css_js.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/js_code/live_js.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/js_code/recorder_js.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/masterqa/__init__.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/masterqa/master_qa.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/plugins/__init__.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/plugins/base_plugin.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/plugins/basic_test_info.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/plugins/db_reporting_plugin.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/plugins/driver_manager.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/plugins/page_source.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/plugins/pytest_plugin.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/plugins/s3_logging_plugin.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/plugins/sb_manager.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/plugins/screen_shots.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/plugins/selenium_plugin.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/resources/__init__.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/translate/__init__.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/translate/chinese.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/translate/dutch.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/translate/french.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/translate/italian.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/translate/japanese.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/translate/korean.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/translate/master_dict.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/translate/portuguese.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/translate/russian.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/translate/spanish.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/translate/translator.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/undetected/__init__.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/undetected/cdp.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/undetected/cdp_driver/__init__.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/undetected/cdp_driver/_contradict.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/undetected/cdp_driver/browser.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/undetected/cdp_driver/cdp_util.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/undetected/cdp_driver/config.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/undetected/cdp_driver/connection.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/undetected/cdp_driver/tab.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/undetected/dprocess.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/undetected/options.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/undetected/patcher.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/undetected/reactor.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/undetected/webelement.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/utilities/__init__.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/utilities/selenium_grid/__init__.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/utilities/selenium_grid/download_selenium_server.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/utilities/selenium_grid/font_color +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/utilities/selenium_grid/grid-hub +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/utilities/selenium_grid/grid-node +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/utilities/selenium_grid/grid_hub.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/utilities/selenium_grid/grid_node.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/utilities/selenium_grid/register-grid-node.bat +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/utilities/selenium_grid/register-grid-node.sh +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/utilities/selenium_grid/start-grid-hub.bat +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/utilities/selenium_grid/start-grid-hub.sh +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/utilities/selenium_ide/__init__.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase/utilities/selenium_ide/convert_ide.py +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase.egg-info/SOURCES.txt +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase.egg-info/dependency_links.txt +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase.egg-info/entry_points.txt +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/seleniumbase.egg-info/top_level.txt +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/setup.cfg +0 -0
- {seleniumbase-4.56.4 → seleniumbase-4.56.5}/virtualenv_install.sh +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: seleniumbase
|
|
3
|
-
Version: 4.56.
|
|
3
|
+
Version: 4.56.5
|
|
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
|
|
@@ -133,9 +133,11 @@ Requires-Dist: coverage>=7.16.2; python_version == "3.10" and extra == "coverage
|
|
|
133
133
|
Requires-Dist: coverage>=7.17.0; python_version >= "3.11" and extra == "coverage"
|
|
134
134
|
Requires-Dist: pytest-cov>=7.1.0; extra == "coverage"
|
|
135
135
|
Provides-Extra: flake8
|
|
136
|
-
Requires-Dist: flake8==7.4.1; extra == "flake8"
|
|
136
|
+
Requires-Dist: flake8==7.4.1; python_version == "3.10" and extra == "flake8"
|
|
137
|
+
Requires-Dist: flake8==7.5.0; python_version >= "3.11" and extra == "flake8"
|
|
137
138
|
Requires-Dist: mccabe==0.7.0; extra == "flake8"
|
|
138
|
-
Requires-Dist: pyflakes==4.0.3; extra == "flake8"
|
|
139
|
+
Requires-Dist: pyflakes==4.0.3; python_version == "3.10" and extra == "flake8"
|
|
140
|
+
Requires-Dist: pyflakes==4.1.0; python_version >= "3.11" and extra == "flake8"
|
|
139
141
|
Requires-Dist: pycodestyle==2.15.0; extra == "flake8"
|
|
140
142
|
Provides-Extra: mcp
|
|
141
143
|
Requires-Dist: mcp[cli]<3.0.0,>=2.3.0; extra == "mcp"
|
|
@@ -162,7 +164,7 @@ Requires-Dist: pyee>=14.0.0; python_version >= "3.12" and extra == "playwright"
|
|
|
162
164
|
Provides-Extra: pyautogui
|
|
163
165
|
Requires-Dist: PyAutoGUI>=0.9.54; platform_system != "Linux" and extra == "pyautogui"
|
|
164
166
|
Provides-Extra: uv
|
|
165
|
-
Requires-Dist: uv>=0.13.
|
|
167
|
+
Requires-Dist: uv>=0.13.6; extra == "uv"
|
|
166
168
|
Dynamic: author
|
|
167
169
|
Dynamic: author-email
|
|
168
170
|
Dynamic: classifier
|
|
@@ -194,7 +196,7 @@ Dynamic: summary
|
|
|
194
196
|
<p align="center"><b align="center">Includes stealth options for bypassing bot-detection and CAPTCHAs.<br /></b></p>
|
|
195
197
|
|
|
196
198
|
<p align="center">
|
|
197
|
-
<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-
|
|
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 />
|
|
198
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>
|
|
199
201
|
</p>
|
|
200
202
|
|
|
@@ -245,20 +247,30 @@ Dynamic: summary
|
|
|
245
247
|
|
|
246
248
|
--------
|
|
247
249
|
|
|
248
|
-
📝
|
|
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 bypasses BrowserScan, Sannysoft, and Cloudflare bot-detection)</em>
|
|
249
251
|
|
|
250
252
|
```python
|
|
251
253
|
from seleniumbase import sb_cdp
|
|
252
254
|
|
|
253
|
-
sb = sb_cdp.Chrome()
|
|
255
|
+
sb = sb_cdp.Chrome() # Launch a stealth browser
|
|
254
256
|
sb.goto("https://browserscan.net/bot-detection")
|
|
255
257
|
sb.assert_element('strong:contains("Normal")')
|
|
256
258
|
sb.sleep(1)
|
|
259
|
+
|
|
257
260
|
sb.goto("https://bot.sannysoft.com/")
|
|
258
261
|
sb.assert_element(".passed")
|
|
259
262
|
sb.assert_element_not_visible(".failed")
|
|
260
263
|
sb.sleep(1)
|
|
261
|
-
|
|
264
|
+
|
|
265
|
+
sb.goto("https://www.planetminecraft.com/account")
|
|
266
|
+
sb.type('[name="email"]', "Name123")
|
|
267
|
+
sb.type('[name="password"]', "Pass")
|
|
268
|
+
sb.click("input#autologin")
|
|
269
|
+
sb.solve_captcha() # Works on different CAPTCHAs
|
|
270
|
+
sb.assert_element('input[name="login"]')
|
|
271
|
+
sb.assert_element_not_visible("input[disabled]")
|
|
272
|
+
sb.sleep(1)
|
|
273
|
+
sb.quit() # Quit browser before end-of-program
|
|
262
274
|
```
|
|
263
275
|
|
|
264
276
|
<p align="center">
|
|
@@ -271,37 +283,16 @@ sb.quit()
|
|
|
271
283
|
<br /><em>(All Sannysoft bot-detection tests passed successfully)</em>
|
|
272
284
|
</p>
|
|
273
285
|
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
📝 Here's <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/cdp_mode/raw_cdp_planetmc.py">another example</a> with <b><code translate="no">seleniumbase</code></b> <b><code translate="no">sb_cdp</code></b> (<a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/cdp_mode/ReadMe.md#-pure-cdp-mode-sb_cdp"><i>Pure CDP Mode</i></a>):<br />(It performs various browser actions and bypasses a Cloudflare Turnstile)
|
|
277
|
-
|
|
278
|
-
```python
|
|
279
|
-
from seleniumbase import sb_cdp
|
|
280
|
-
|
|
281
|
-
sb = sb_cdp.Chrome(incognito=True)
|
|
282
|
-
sb.goto("https://www.planetminecraft.com/account")
|
|
283
|
-
sb.assert_element('input[name="login"]')
|
|
284
|
-
sb.type('input[name="email"]', "test@example.com")
|
|
285
|
-
sb.type('input[name="password"]', "Fake_Password")
|
|
286
|
-
sb.click("input#autologin") # The checkbox
|
|
287
|
-
if sb.is_element_visible("input[disabled]"):
|
|
288
|
-
sb.solve_captcha() # Enables the input
|
|
289
|
-
sb.assert_element_absent("input[disabled]")
|
|
290
|
-
sb.sleep(1.5)
|
|
291
|
-
sb.quit()
|
|
292
|
-
```
|
|
293
|
-
|
|
294
|
-
```
|
|
295
|
-
python raw_cdp_planetmc.py
|
|
296
|
-
```
|
|
297
|
-
|
|
298
|
-
<p align="left">
|
|
286
|
+
<p align="center">
|
|
299
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>
|
|
300
289
|
</p>
|
|
301
290
|
|
|
291
|
+
--------
|
|
292
|
+
|
|
302
293
|
✅ <b><code>sb.solve_captcha()</code></b> handles CAPTCHAs that aren't bypassed automatically.<br />(If called when there's no CAPTCHA on the page, then nothing happens / no-op.)
|
|
303
294
|
|
|
304
|
-
ℹ️ <code>sb.assert_*</code> methods wait up to 7 seconds for the expected condition
|
|
295
|
+
ℹ️ <code>sb.assert_*</code> methods wait up to 7 seconds for the expected condition.<br />(Raises an exception if the condition isn't met in time.)
|
|
305
296
|
|
|
306
297
|
--------
|
|
307
298
|
|
|
@@ -814,7 +805,7 @@ self.assert_no_js_errors() # Verify there are no JS errors.
|
|
|
814
805
|
self.type("input", "dogs\n") # (The "\n" presses ENTER)
|
|
815
806
|
```
|
|
816
807
|
|
|
817
|
-
Most SeleniumBase scripts can be run with <code translate="no">pytest</code>, <code translate="no">pynose</code>, or pure <code translate="no">python</code>. Not all test runners can run all test formats. For example, tests that use the `sb` pytest fixture can only be run with `pytest`. (See <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/syntax_formats.md">Syntax Formats</a>) There's also a <a href="https://behave.readthedocs.io/en/
|
|
808
|
+
Most SeleniumBase scripts can be run with <code translate="no">pytest</code>, <code translate="no">pynose</code>, or pure <code translate="no">python</code>. Not all test runners can run all test formats. For example, tests that use the `sb` pytest fixture can only be run with `pytest`. (See <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/syntax_formats.md">Syntax Formats</a>) There's also a <a href="https://behave.readthedocs.io/en/latest/gherkin/" target="_blank" rel="noopener">Gherkin</a> test format that runs with <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/behave_bdd/ReadMe.md">behave</a>.
|
|
818
809
|
|
|
819
810
|
```zsh
|
|
820
811
|
pytest coffee_cart_tests.py --rs
|
|
@@ -976,10 +967,15 @@ pytest test_coffee_cart.py --trace
|
|
|
976
967
|
--sjw # (Skip JS Waits for readyState to be "complete" or Angular to load.)
|
|
977
968
|
--wfa # (Wait for AngularJS to be done loading after specific web actions.)
|
|
978
969
|
--pls=PLS # (Set pageLoadStrategy on Chrome: "normal", "eager", or "none".)
|
|
979
|
-
--headless # (
|
|
980
|
-
--
|
|
981
|
-
--headless2 # (Use Chrome's new headless mode, which supports extensions.)
|
|
970
|
+
--headless # (Use headless mode. Linux uses this mode by default.)
|
|
971
|
+
--chs # (Use Chrome-Headless-Shell, a limited Chrome without stealth.)
|
|
982
972
|
--headed # (Run tests in headed/GUI mode on Linux OS, where not default.)
|
|
973
|
+
--incognito # (Enable Chrome's Incognito mode.)
|
|
974
|
+
--guest # (Enable Chrome's Guest mode.)
|
|
975
|
+
--uc # (Use undetected-chromedriver to evade bot-detection.)
|
|
976
|
+
--uc-cdp-events # (Capture CDP events in UC Mode. NOT related to CDP Mode.)
|
|
977
|
+
--log-cdp # ("goog:loggingPrefs", {"performance": "ALL", "browser": "ALL"})
|
|
978
|
+
--remote-debug # (Sync to Chrome Remote Debugger chrome://inspect/#devices)
|
|
983
979
|
--xvfb # (Run tests using the Xvfb virtual display server on Linux OS.)
|
|
984
980
|
--xvfb-metrics=STRING # (Set Xvfb display size on Linux: "Width,Height".)
|
|
985
981
|
--locale=LOCALE_CODE # (Set the Language Locale Code for the web browser.)
|
|
@@ -1013,17 +1009,11 @@ pytest test_coffee_cart.py --trace
|
|
|
1013
1009
|
--disable-ws # (Disable Web Security on Chromium-based browsers.)
|
|
1014
1010
|
--enable-ws # (Enable Web Security on Chromium-based browsers.)
|
|
1015
1011
|
--enable-sync # (Enable "Chrome Sync" on websites.)
|
|
1016
|
-
--uc | --undetected # (Use undetected-chromedriver to evade bot-detection.)
|
|
1017
|
-
--uc-cdp-events # (Capture CDP events when running in "--undetected" mode.)
|
|
1018
|
-
--log-cdp # ("goog:loggingPrefs", {"performance": "ALL", "browser": "ALL"})
|
|
1019
|
-
--remote-debug # (Sync to Chrome Remote Debugger chrome://inspect/#devices)
|
|
1020
1012
|
--ftrace | --final-trace # (Debug Mode after each test. Don't use with CI!)
|
|
1021
1013
|
--dashboard # (Enable the SeleniumBase Dashboard. Saved at: dashboard.html)
|
|
1022
1014
|
--dash-title=STRING # (Set the title shown for the generated dashboard.)
|
|
1023
1015
|
--enable-3d-apis # (Enables WebGL and 3D APIs.)
|
|
1024
1016
|
--swiftshader # (Chrome "--use-gl=angle" / "--use-angle=swiftshader-webgl")
|
|
1025
|
-
--incognito # (Enable Chrome's Incognito mode.)
|
|
1026
|
-
--guest # (Enable Chrome's Guest mode.)
|
|
1027
1017
|
--dark # (Enable Chrome's Dark mode.)
|
|
1028
1018
|
--devtools # (Open Chrome's DevTools when the browser opens.)
|
|
1029
1019
|
--rs | --reuse-session # (Reuse browser session for all tests.)
|
|
@@ -1592,21 +1582,13 @@ self.activate_jquery()
|
|
|
1592
1582
|
|
|
1593
1583
|
```python
|
|
1594
1584
|
self.execute_script("jQuery, window.scrollTo(0, 600)") # Scrolling the page
|
|
1595
|
-
|
|
1596
1585
|
self.execute_script("jQuery('#annoying-widget').hide()") # Hiding elements on a page
|
|
1597
|
-
|
|
1598
1586
|
self.execute_script("jQuery('#hidden-widget').show(0)") # Showing hidden elements on a page
|
|
1599
|
-
|
|
1600
1587
|
self.execute_script("jQuery('#annoying-button a').remove()") # Removing elements on a page
|
|
1601
|
-
|
|
1602
1588
|
self.execute_script("jQuery('%s').mouseover()" % (mouse_over_item)) # Mouse-over elements on a page
|
|
1603
|
-
|
|
1604
1589
|
self.execute_script("jQuery('input#the_id').val('my_text')") # Fast text input on a page
|
|
1605
|
-
|
|
1606
1590
|
self.execute_script("jQuery('div#dropdown a.link').click()") # Click elements on a page
|
|
1607
|
-
|
|
1608
1591
|
self.execute_script("return jQuery('div#amazing')[0].text") # Returns the css "text" of the element given
|
|
1609
|
-
|
|
1610
1592
|
self.execute_script("return jQuery('textarea')[2].value") # Returns the css "value" of the 3rd textarea element on the page
|
|
1611
1593
|
```
|
|
1612
1594
|
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
<p align="center"><b align="center">Includes stealth options for bypassing bot-detection and CAPTCHAs.<br /></b></p>
|
|
16
16
|
|
|
17
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-
|
|
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
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
20
|
</p>
|
|
21
21
|
|
|
@@ -66,20 +66,30 @@
|
|
|
66
66
|
|
|
67
67
|
--------
|
|
68
68
|
|
|
69
|
-
📝
|
|
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 bypasses BrowserScan, Sannysoft, and Cloudflare bot-detection)</em>
|
|
70
70
|
|
|
71
71
|
```python
|
|
72
72
|
from seleniumbase import sb_cdp
|
|
73
73
|
|
|
74
|
-
sb = sb_cdp.Chrome()
|
|
74
|
+
sb = sb_cdp.Chrome() # Launch a stealth browser
|
|
75
75
|
sb.goto("https://browserscan.net/bot-detection")
|
|
76
76
|
sb.assert_element('strong:contains("Normal")')
|
|
77
77
|
sb.sleep(1)
|
|
78
|
+
|
|
78
79
|
sb.goto("https://bot.sannysoft.com/")
|
|
79
80
|
sb.assert_element(".passed")
|
|
80
81
|
sb.assert_element_not_visible(".failed")
|
|
81
82
|
sb.sleep(1)
|
|
82
|
-
|
|
83
|
+
|
|
84
|
+
sb.goto("https://www.planetminecraft.com/account")
|
|
85
|
+
sb.type('[name="email"]', "Name123")
|
|
86
|
+
sb.type('[name="password"]', "Pass")
|
|
87
|
+
sb.click("input#autologin")
|
|
88
|
+
sb.solve_captcha() # Works on different CAPTCHAs
|
|
89
|
+
sb.assert_element('input[name="login"]')
|
|
90
|
+
sb.assert_element_not_visible("input[disabled]")
|
|
91
|
+
sb.sleep(1)
|
|
92
|
+
sb.quit() # Quit browser before end-of-program
|
|
83
93
|
```
|
|
84
94
|
|
|
85
95
|
<p align="center">
|
|
@@ -92,37 +102,16 @@ sb.quit()
|
|
|
92
102
|
<br /><em>(All Sannysoft bot-detection tests passed successfully)</em>
|
|
93
103
|
</p>
|
|
94
104
|
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
📝 Here's <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/cdp_mode/raw_cdp_planetmc.py">another example</a> with <b><code translate="no">seleniumbase</code></b> <b><code translate="no">sb_cdp</code></b> (<a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/cdp_mode/ReadMe.md#-pure-cdp-mode-sb_cdp"><i>Pure CDP Mode</i></a>):<br />(It performs various browser actions and bypasses a Cloudflare Turnstile)
|
|
98
|
-
|
|
99
|
-
```python
|
|
100
|
-
from seleniumbase import sb_cdp
|
|
101
|
-
|
|
102
|
-
sb = sb_cdp.Chrome(incognito=True)
|
|
103
|
-
sb.goto("https://www.planetminecraft.com/account")
|
|
104
|
-
sb.assert_element('input[name="login"]')
|
|
105
|
-
sb.type('input[name="email"]', "test@example.com")
|
|
106
|
-
sb.type('input[name="password"]', "Fake_Password")
|
|
107
|
-
sb.click("input#autologin") # The checkbox
|
|
108
|
-
if sb.is_element_visible("input[disabled]"):
|
|
109
|
-
sb.solve_captcha() # Enables the input
|
|
110
|
-
sb.assert_element_absent("input[disabled]")
|
|
111
|
-
sb.sleep(1.5)
|
|
112
|
-
sb.quit()
|
|
113
|
-
```
|
|
114
|
-
|
|
115
|
-
```
|
|
116
|
-
python raw_cdp_planetmc.py
|
|
117
|
-
```
|
|
118
|
-
|
|
119
|
-
<p align="left">
|
|
105
|
+
<p align="center">
|
|
120
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>
|
|
121
108
|
</p>
|
|
122
109
|
|
|
110
|
+
--------
|
|
111
|
+
|
|
123
112
|
✅ <b><code>sb.solve_captcha()</code></b> handles CAPTCHAs that aren't bypassed automatically.<br />(If called when there's no CAPTCHA on the page, then nothing happens / no-op.)
|
|
124
113
|
|
|
125
|
-
ℹ️ <code>sb.assert_*</code> methods wait up to 7 seconds for the expected condition
|
|
114
|
+
ℹ️ <code>sb.assert_*</code> methods wait up to 7 seconds for the expected condition.<br />(Raises an exception if the condition isn't met in time.)
|
|
126
115
|
|
|
127
116
|
--------
|
|
128
117
|
|
|
@@ -635,7 +624,7 @@ self.assert_no_js_errors() # Verify there are no JS errors.
|
|
|
635
624
|
self.type("input", "dogs\n") # (The "\n" presses ENTER)
|
|
636
625
|
```
|
|
637
626
|
|
|
638
|
-
Most SeleniumBase scripts can be run with <code translate="no">pytest</code>, <code translate="no">pynose</code>, or pure <code translate="no">python</code>. Not all test runners can run all test formats. For example, tests that use the `sb` pytest fixture can only be run with `pytest`. (See <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/syntax_formats.md">Syntax Formats</a>) There's also a <a href="https://behave.readthedocs.io/en/
|
|
627
|
+
Most SeleniumBase scripts can be run with <code translate="no">pytest</code>, <code translate="no">pynose</code>, or pure <code translate="no">python</code>. Not all test runners can run all test formats. For example, tests that use the `sb` pytest fixture can only be run with `pytest`. (See <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/syntax_formats.md">Syntax Formats</a>) There's also a <a href="https://behave.readthedocs.io/en/latest/gherkin/" target="_blank" rel="noopener">Gherkin</a> test format that runs with <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/behave_bdd/ReadMe.md">behave</a>.
|
|
639
628
|
|
|
640
629
|
```zsh
|
|
641
630
|
pytest coffee_cart_tests.py --rs
|
|
@@ -797,10 +786,15 @@ pytest test_coffee_cart.py --trace
|
|
|
797
786
|
--sjw # (Skip JS Waits for readyState to be "complete" or Angular to load.)
|
|
798
787
|
--wfa # (Wait for AngularJS to be done loading after specific web actions.)
|
|
799
788
|
--pls=PLS # (Set pageLoadStrategy on Chrome: "normal", "eager", or "none".)
|
|
800
|
-
--headless # (
|
|
801
|
-
--
|
|
802
|
-
--headless2 # (Use Chrome's new headless mode, which supports extensions.)
|
|
789
|
+
--headless # (Use headless mode. Linux uses this mode by default.)
|
|
790
|
+
--chs # (Use Chrome-Headless-Shell, a limited Chrome without stealth.)
|
|
803
791
|
--headed # (Run tests in headed/GUI mode on Linux OS, where not default.)
|
|
792
|
+
--incognito # (Enable Chrome's Incognito mode.)
|
|
793
|
+
--guest # (Enable Chrome's Guest mode.)
|
|
794
|
+
--uc # (Use undetected-chromedriver to evade bot-detection.)
|
|
795
|
+
--uc-cdp-events # (Capture CDP events in UC Mode. NOT related to CDP Mode.)
|
|
796
|
+
--log-cdp # ("goog:loggingPrefs", {"performance": "ALL", "browser": "ALL"})
|
|
797
|
+
--remote-debug # (Sync to Chrome Remote Debugger chrome://inspect/#devices)
|
|
804
798
|
--xvfb # (Run tests using the Xvfb virtual display server on Linux OS.)
|
|
805
799
|
--xvfb-metrics=STRING # (Set Xvfb display size on Linux: "Width,Height".)
|
|
806
800
|
--locale=LOCALE_CODE # (Set the Language Locale Code for the web browser.)
|
|
@@ -834,17 +828,11 @@ pytest test_coffee_cart.py --trace
|
|
|
834
828
|
--disable-ws # (Disable Web Security on Chromium-based browsers.)
|
|
835
829
|
--enable-ws # (Enable Web Security on Chromium-based browsers.)
|
|
836
830
|
--enable-sync # (Enable "Chrome Sync" on websites.)
|
|
837
|
-
--uc | --undetected # (Use undetected-chromedriver to evade bot-detection.)
|
|
838
|
-
--uc-cdp-events # (Capture CDP events when running in "--undetected" mode.)
|
|
839
|
-
--log-cdp # ("goog:loggingPrefs", {"performance": "ALL", "browser": "ALL"})
|
|
840
|
-
--remote-debug # (Sync to Chrome Remote Debugger chrome://inspect/#devices)
|
|
841
831
|
--ftrace | --final-trace # (Debug Mode after each test. Don't use with CI!)
|
|
842
832
|
--dashboard # (Enable the SeleniumBase Dashboard. Saved at: dashboard.html)
|
|
843
833
|
--dash-title=STRING # (Set the title shown for the generated dashboard.)
|
|
844
834
|
--enable-3d-apis # (Enables WebGL and 3D APIs.)
|
|
845
835
|
--swiftshader # (Chrome "--use-gl=angle" / "--use-angle=swiftshader-webgl")
|
|
846
|
-
--incognito # (Enable Chrome's Incognito mode.)
|
|
847
|
-
--guest # (Enable Chrome's Guest mode.)
|
|
848
836
|
--dark # (Enable Chrome's Dark mode.)
|
|
849
837
|
--devtools # (Open Chrome's DevTools when the browser opens.)
|
|
850
838
|
--rs | --reuse-session # (Reuse browser session for all tests.)
|
|
@@ -1413,21 +1401,13 @@ self.activate_jquery()
|
|
|
1413
1401
|
|
|
1414
1402
|
```python
|
|
1415
1403
|
self.execute_script("jQuery, window.scrollTo(0, 600)") # Scrolling the page
|
|
1416
|
-
|
|
1417
1404
|
self.execute_script("jQuery('#annoying-widget').hide()") # Hiding elements on a page
|
|
1418
|
-
|
|
1419
1405
|
self.execute_script("jQuery('#hidden-widget').show(0)") # Showing hidden elements on a page
|
|
1420
|
-
|
|
1421
1406
|
self.execute_script("jQuery('#annoying-button a').remove()") # Removing elements on a page
|
|
1422
|
-
|
|
1423
1407
|
self.execute_script("jQuery('%s').mouseover()" % (mouse_over_item)) # Mouse-over elements on a page
|
|
1424
|
-
|
|
1425
1408
|
self.execute_script("jQuery('input#the_id').val('my_text')") # Fast text input on a page
|
|
1426
|
-
|
|
1427
1409
|
self.execute_script("jQuery('div#dropdown a.link').click()") # Click elements on a page
|
|
1428
|
-
|
|
1429
1410
|
self.execute_script("return jQuery('div#amazing')[0].text") # Returns the css "text" of the element given
|
|
1430
|
-
|
|
1431
1411
|
self.execute_script("return jQuery('textarea')[2].value") # Returns the css "value" of the 3rd textarea element on the page
|
|
1432
1412
|
```
|
|
1433
1413
|
|
|
@@ -71,7 +71,9 @@ rich>=15.0.0,<16
|
|
|
71
71
|
coverage>=7.16.2;python_version=="3.10"
|
|
72
72
|
coverage>=7.17.0;python_version>="3.11"
|
|
73
73
|
pytest-cov>=7.1.0
|
|
74
|
-
flake8==7.4.1
|
|
74
|
+
flake8==7.4.1;python_version=="3.10"
|
|
75
|
+
flake8==7.5.0;python_version>="3.11"
|
|
75
76
|
mccabe==0.7.0
|
|
76
|
-
pyflakes==4.0.3
|
|
77
|
+
pyflakes==4.0.3;python_version=="3.10"
|
|
78
|
+
pyflakes==4.1.0;python_version>="3.11"
|
|
77
79
|
pycodestyle==2.15.0
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
# seleniumbase package
|
|
2
|
-
__version__ = "4.56.
|
|
2
|
+
__version__ = "4.56.5"
|
|
@@ -1268,7 +1268,8 @@ class Element:
|
|
|
1268
1268
|
await self.tab.send(cdp.dom.disable())
|
|
1269
1269
|
await self.tab.send(cdp.overlay.disable())
|
|
1270
1270
|
return
|
|
1271
|
-
|
|
1271
|
+
with suppress(Exception):
|
|
1272
|
+
await self.tab.send(cdp.dom.enable())
|
|
1272
1273
|
await self.tab.send(cdp.overlay.enable())
|
|
1273
1274
|
conf = cdp.overlay.HighlightConfig(
|
|
1274
1275
|
show_info=True, show_extension_lines=True, show_styles=True
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: seleniumbase
|
|
3
|
-
Version: 4.56.
|
|
3
|
+
Version: 4.56.5
|
|
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
|
|
@@ -133,9 +133,11 @@ Requires-Dist: coverage>=7.16.2; python_version == "3.10" and extra == "coverage
|
|
|
133
133
|
Requires-Dist: coverage>=7.17.0; python_version >= "3.11" and extra == "coverage"
|
|
134
134
|
Requires-Dist: pytest-cov>=7.1.0; extra == "coverage"
|
|
135
135
|
Provides-Extra: flake8
|
|
136
|
-
Requires-Dist: flake8==7.4.1; extra == "flake8"
|
|
136
|
+
Requires-Dist: flake8==7.4.1; python_version == "3.10" and extra == "flake8"
|
|
137
|
+
Requires-Dist: flake8==7.5.0; python_version >= "3.11" and extra == "flake8"
|
|
137
138
|
Requires-Dist: mccabe==0.7.0; extra == "flake8"
|
|
138
|
-
Requires-Dist: pyflakes==4.0.3; extra == "flake8"
|
|
139
|
+
Requires-Dist: pyflakes==4.0.3; python_version == "3.10" and extra == "flake8"
|
|
140
|
+
Requires-Dist: pyflakes==4.1.0; python_version >= "3.11" and extra == "flake8"
|
|
139
141
|
Requires-Dist: pycodestyle==2.15.0; extra == "flake8"
|
|
140
142
|
Provides-Extra: mcp
|
|
141
143
|
Requires-Dist: mcp[cli]<3.0.0,>=2.3.0; extra == "mcp"
|
|
@@ -162,7 +164,7 @@ Requires-Dist: pyee>=14.0.0; python_version >= "3.12" and extra == "playwright"
|
|
|
162
164
|
Provides-Extra: pyautogui
|
|
163
165
|
Requires-Dist: PyAutoGUI>=0.9.54; platform_system != "Linux" and extra == "pyautogui"
|
|
164
166
|
Provides-Extra: uv
|
|
165
|
-
Requires-Dist: uv>=0.13.
|
|
167
|
+
Requires-Dist: uv>=0.13.6; extra == "uv"
|
|
166
168
|
Dynamic: author
|
|
167
169
|
Dynamic: author-email
|
|
168
170
|
Dynamic: classifier
|
|
@@ -194,7 +196,7 @@ Dynamic: summary
|
|
|
194
196
|
<p align="center"><b align="center">Includes stealth options for bypassing bot-detection and CAPTCHAs.<br /></b></p>
|
|
195
197
|
|
|
196
198
|
<p align="center">
|
|
197
|
-
<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-
|
|
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 />
|
|
198
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>
|
|
199
201
|
</p>
|
|
200
202
|
|
|
@@ -245,20 +247,30 @@ Dynamic: summary
|
|
|
245
247
|
|
|
246
248
|
--------
|
|
247
249
|
|
|
248
|
-
📝
|
|
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 bypasses BrowserScan, Sannysoft, and Cloudflare bot-detection)</em>
|
|
249
251
|
|
|
250
252
|
```python
|
|
251
253
|
from seleniumbase import sb_cdp
|
|
252
254
|
|
|
253
|
-
sb = sb_cdp.Chrome()
|
|
255
|
+
sb = sb_cdp.Chrome() # Launch a stealth browser
|
|
254
256
|
sb.goto("https://browserscan.net/bot-detection")
|
|
255
257
|
sb.assert_element('strong:contains("Normal")')
|
|
256
258
|
sb.sleep(1)
|
|
259
|
+
|
|
257
260
|
sb.goto("https://bot.sannysoft.com/")
|
|
258
261
|
sb.assert_element(".passed")
|
|
259
262
|
sb.assert_element_not_visible(".failed")
|
|
260
263
|
sb.sleep(1)
|
|
261
|
-
|
|
264
|
+
|
|
265
|
+
sb.goto("https://www.planetminecraft.com/account")
|
|
266
|
+
sb.type('[name="email"]', "Name123")
|
|
267
|
+
sb.type('[name="password"]', "Pass")
|
|
268
|
+
sb.click("input#autologin")
|
|
269
|
+
sb.solve_captcha() # Works on different CAPTCHAs
|
|
270
|
+
sb.assert_element('input[name="login"]')
|
|
271
|
+
sb.assert_element_not_visible("input[disabled]")
|
|
272
|
+
sb.sleep(1)
|
|
273
|
+
sb.quit() # Quit browser before end-of-program
|
|
262
274
|
```
|
|
263
275
|
|
|
264
276
|
<p align="center">
|
|
@@ -271,37 +283,16 @@ sb.quit()
|
|
|
271
283
|
<br /><em>(All Sannysoft bot-detection tests passed successfully)</em>
|
|
272
284
|
</p>
|
|
273
285
|
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
📝 Here's <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/cdp_mode/raw_cdp_planetmc.py">another example</a> with <b><code translate="no">seleniumbase</code></b> <b><code translate="no">sb_cdp</code></b> (<a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/cdp_mode/ReadMe.md#-pure-cdp-mode-sb_cdp"><i>Pure CDP Mode</i></a>):<br />(It performs various browser actions and bypasses a Cloudflare Turnstile)
|
|
277
|
-
|
|
278
|
-
```python
|
|
279
|
-
from seleniumbase import sb_cdp
|
|
280
|
-
|
|
281
|
-
sb = sb_cdp.Chrome(incognito=True)
|
|
282
|
-
sb.goto("https://www.planetminecraft.com/account")
|
|
283
|
-
sb.assert_element('input[name="login"]')
|
|
284
|
-
sb.type('input[name="email"]', "test@example.com")
|
|
285
|
-
sb.type('input[name="password"]', "Fake_Password")
|
|
286
|
-
sb.click("input#autologin") # The checkbox
|
|
287
|
-
if sb.is_element_visible("input[disabled]"):
|
|
288
|
-
sb.solve_captcha() # Enables the input
|
|
289
|
-
sb.assert_element_absent("input[disabled]")
|
|
290
|
-
sb.sleep(1.5)
|
|
291
|
-
sb.quit()
|
|
292
|
-
```
|
|
293
|
-
|
|
294
|
-
```
|
|
295
|
-
python raw_cdp_planetmc.py
|
|
296
|
-
```
|
|
297
|
-
|
|
298
|
-
<p align="left">
|
|
286
|
+
<p align="center">
|
|
299
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>
|
|
300
289
|
</p>
|
|
301
290
|
|
|
291
|
+
--------
|
|
292
|
+
|
|
302
293
|
✅ <b><code>sb.solve_captcha()</code></b> handles CAPTCHAs that aren't bypassed automatically.<br />(If called when there's no CAPTCHA on the page, then nothing happens / no-op.)
|
|
303
294
|
|
|
304
|
-
ℹ️ <code>sb.assert_*</code> methods wait up to 7 seconds for the expected condition
|
|
295
|
+
ℹ️ <code>sb.assert_*</code> methods wait up to 7 seconds for the expected condition.<br />(Raises an exception if the condition isn't met in time.)
|
|
305
296
|
|
|
306
297
|
--------
|
|
307
298
|
|
|
@@ -814,7 +805,7 @@ self.assert_no_js_errors() # Verify there are no JS errors.
|
|
|
814
805
|
self.type("input", "dogs\n") # (The "\n" presses ENTER)
|
|
815
806
|
```
|
|
816
807
|
|
|
817
|
-
Most SeleniumBase scripts can be run with <code translate="no">pytest</code>, <code translate="no">pynose</code>, or pure <code translate="no">python</code>. Not all test runners can run all test formats. For example, tests that use the `sb` pytest fixture can only be run with `pytest`. (See <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/syntax_formats.md">Syntax Formats</a>) There's also a <a href="https://behave.readthedocs.io/en/
|
|
808
|
+
Most SeleniumBase scripts can be run with <code translate="no">pytest</code>, <code translate="no">pynose</code>, or pure <code translate="no">python</code>. Not all test runners can run all test formats. For example, tests that use the `sb` pytest fixture can only be run with `pytest`. (See <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/syntax_formats.md">Syntax Formats</a>) There's also a <a href="https://behave.readthedocs.io/en/latest/gherkin/" target="_blank" rel="noopener">Gherkin</a> test format that runs with <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/behave_bdd/ReadMe.md">behave</a>.
|
|
818
809
|
|
|
819
810
|
```zsh
|
|
820
811
|
pytest coffee_cart_tests.py --rs
|
|
@@ -976,10 +967,15 @@ pytest test_coffee_cart.py --trace
|
|
|
976
967
|
--sjw # (Skip JS Waits for readyState to be "complete" or Angular to load.)
|
|
977
968
|
--wfa # (Wait for AngularJS to be done loading after specific web actions.)
|
|
978
969
|
--pls=PLS # (Set pageLoadStrategy on Chrome: "normal", "eager", or "none".)
|
|
979
|
-
--headless # (
|
|
980
|
-
--
|
|
981
|
-
--headless2 # (Use Chrome's new headless mode, which supports extensions.)
|
|
970
|
+
--headless # (Use headless mode. Linux uses this mode by default.)
|
|
971
|
+
--chs # (Use Chrome-Headless-Shell, a limited Chrome without stealth.)
|
|
982
972
|
--headed # (Run tests in headed/GUI mode on Linux OS, where not default.)
|
|
973
|
+
--incognito # (Enable Chrome's Incognito mode.)
|
|
974
|
+
--guest # (Enable Chrome's Guest mode.)
|
|
975
|
+
--uc # (Use undetected-chromedriver to evade bot-detection.)
|
|
976
|
+
--uc-cdp-events # (Capture CDP events in UC Mode. NOT related to CDP Mode.)
|
|
977
|
+
--log-cdp # ("goog:loggingPrefs", {"performance": "ALL", "browser": "ALL"})
|
|
978
|
+
--remote-debug # (Sync to Chrome Remote Debugger chrome://inspect/#devices)
|
|
983
979
|
--xvfb # (Run tests using the Xvfb virtual display server on Linux OS.)
|
|
984
980
|
--xvfb-metrics=STRING # (Set Xvfb display size on Linux: "Width,Height".)
|
|
985
981
|
--locale=LOCALE_CODE # (Set the Language Locale Code for the web browser.)
|
|
@@ -1013,17 +1009,11 @@ pytest test_coffee_cart.py --trace
|
|
|
1013
1009
|
--disable-ws # (Disable Web Security on Chromium-based browsers.)
|
|
1014
1010
|
--enable-ws # (Enable Web Security on Chromium-based browsers.)
|
|
1015
1011
|
--enable-sync # (Enable "Chrome Sync" on websites.)
|
|
1016
|
-
--uc | --undetected # (Use undetected-chromedriver to evade bot-detection.)
|
|
1017
|
-
--uc-cdp-events # (Capture CDP events when running in "--undetected" mode.)
|
|
1018
|
-
--log-cdp # ("goog:loggingPrefs", {"performance": "ALL", "browser": "ALL"})
|
|
1019
|
-
--remote-debug # (Sync to Chrome Remote Debugger chrome://inspect/#devices)
|
|
1020
1012
|
--ftrace | --final-trace # (Debug Mode after each test. Don't use with CI!)
|
|
1021
1013
|
--dashboard # (Enable the SeleniumBase Dashboard. Saved at: dashboard.html)
|
|
1022
1014
|
--dash-title=STRING # (Set the title shown for the generated dashboard.)
|
|
1023
1015
|
--enable-3d-apis # (Enables WebGL and 3D APIs.)
|
|
1024
1016
|
--swiftshader # (Chrome "--use-gl=angle" / "--use-angle=swiftshader-webgl")
|
|
1025
|
-
--incognito # (Enable Chrome's Incognito mode.)
|
|
1026
|
-
--guest # (Enable Chrome's Guest mode.)
|
|
1027
1017
|
--dark # (Enable Chrome's Dark mode.)
|
|
1028
1018
|
--devtools # (Open Chrome's DevTools when the browser opens.)
|
|
1029
1019
|
--rs | --reuse-session # (Reuse browser session for all tests.)
|
|
@@ -1592,21 +1582,13 @@ self.activate_jquery()
|
|
|
1592
1582
|
|
|
1593
1583
|
```python
|
|
1594
1584
|
self.execute_script("jQuery, window.scrollTo(0, 600)") # Scrolling the page
|
|
1595
|
-
|
|
1596
1585
|
self.execute_script("jQuery('#annoying-widget').hide()") # Hiding elements on a page
|
|
1597
|
-
|
|
1598
1586
|
self.execute_script("jQuery('#hidden-widget').show(0)") # Showing hidden elements on a page
|
|
1599
|
-
|
|
1600
1587
|
self.execute_script("jQuery('#annoying-button a').remove()") # Removing elements on a page
|
|
1601
|
-
|
|
1602
1588
|
self.execute_script("jQuery('%s').mouseover()" % (mouse_over_item)) # Mouse-over elements on a page
|
|
1603
|
-
|
|
1604
1589
|
self.execute_script("jQuery('input#the_id').val('my_text')") # Fast text input on a page
|
|
1605
|
-
|
|
1606
1590
|
self.execute_script("jQuery('div#dropdown a.link').click()") # Click elements on a page
|
|
1607
|
-
|
|
1608
1591
|
self.execute_script("return jQuery('div#amazing')[0].text") # Returns the css "text" of the element given
|
|
1609
|
-
|
|
1610
1592
|
self.execute_script("return jQuery('textarea')[2].value") # Returns the css "value" of the 3rd textarea element on the page
|
|
1611
1593
|
```
|
|
1612
1594
|
|