seleniumbase 4.54.4__tar.gz → 4.54.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.54.4/seleniumbase.egg-info → seleniumbase-4.54.5}/PKG-INFO +2 -2
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/mcp_servers/server.py +81 -53
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/requirements.txt +1 -1
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/__version__.py +1 -1
- {seleniumbase-4.54.4 → seleniumbase-4.54.5/seleniumbase.egg-info}/PKG-INFO +2 -2
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase.egg-info/requires.txt +1 -1
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/setup.py +1 -1
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/.gitignore +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/LICENSE +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/MANIFEST.in +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/README.md +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/install.sh +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/mcp_servers/__init__.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/pyproject.toml +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/pytest.ini +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/sbase/__init__.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/sbase/__main__.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/sbase/steps.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/__init__.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/__main__.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/behave/__init__.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/behave/behave_helper.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/behave/behave_sb.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/behave/steps.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/common/__init__.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/common/decorators.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/common/encryption.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/common/exceptions.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/common/obfuscate.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/common/unobfuscate.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/config/__init__.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/config/ad_block_list.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/config/proxy_list.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/config/settings.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/console_scripts/__init__.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/console_scripts/logo_helper.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/console_scripts/rich_helper.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/console_scripts/run.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/console_scripts/sb_behave_gui.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/console_scripts/sb_caseplans.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/console_scripts/sb_commander.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/console_scripts/sb_install.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/console_scripts/sb_mkchart.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/console_scripts/sb_mkdir.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/console_scripts/sb_mkfile.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/console_scripts/sb_mkpres.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/console_scripts/sb_mkrec.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/console_scripts/sb_objectify.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/console_scripts/sb_print.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/console_scripts/sb_recorder.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/core/__init__.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/core/application_manager.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/core/browser_launcher.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/core/capabilities_parser.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/core/colored_traceback.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/core/create_db_tables.sql +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/core/detect_b_ver.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/core/download_helper.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/core/encoded_images.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/core/jqc_helper.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/core/log_helper.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/core/mysql.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/core/nest_asyncio.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/core/proxy_helper.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/core/recorder_helper.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/core/report_helper.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/core/s3_manager.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/core/sb_cdp.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/core/sb_driver.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/core/session_helper.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/core/settings_parser.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/core/style_sheet.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/core/testcase_manager.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/core/tour_helper.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/core/visual_helper.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/drivers/__init__.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/drivers/brave_drivers/__init__.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/drivers/cft_drivers/__init__.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/drivers/chromium_drivers/__init__.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/drivers/chs_drivers/__init__.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/drivers/comet_drivers/__init__.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/drivers/opera_drivers/__init__.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/extensions/__init__.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/extensions/ad_block.zip +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/extensions/disable_csp.zip +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/extensions/recorder.zip +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/extensions/sbase_ext.zip +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/fixtures/__init__.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/fixtures/base_case.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/fixtures/constants.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/fixtures/css_to_xpath.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/fixtures/errors.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/fixtures/js_utils.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/fixtures/page_actions.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/fixtures/page_utils.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/fixtures/shared_utils.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/fixtures/unittest_helper.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/fixtures/words.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/fixtures/xpath_to_css.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/js_code/__init__.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/js_code/active_css_js.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/js_code/live_js.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/js_code/recorder_js.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/masterqa/__init__.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/masterqa/master_qa.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/plugins/__init__.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/plugins/base_plugin.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/plugins/basic_test_info.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/plugins/db_reporting_plugin.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/plugins/driver_manager.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/plugins/page_source.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/plugins/pytest_plugin.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/plugins/s3_logging_plugin.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/plugins/sb_manager.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/plugins/screen_shots.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/plugins/selenium_plugin.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/resources/__init__.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/translate/__init__.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/translate/chinese.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/translate/dutch.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/translate/french.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/translate/italian.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/translate/japanese.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/translate/korean.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/translate/master_dict.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/translate/portuguese.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/translate/russian.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/translate/spanish.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/translate/translator.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/undetected/__init__.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/undetected/cdp.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/undetected/cdp_driver/__init__.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/undetected/cdp_driver/_contradict.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/undetected/cdp_driver/browser.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/undetected/cdp_driver/cdp_util.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/undetected/cdp_driver/config.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/undetected/cdp_driver/connection.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/undetected/cdp_driver/element.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/undetected/cdp_driver/tab.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/undetected/dprocess.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/undetected/options.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/undetected/patcher.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/undetected/reactor.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/undetected/webelement.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/utilities/__init__.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/utilities/selenium_grid/__init__.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/utilities/selenium_grid/download_selenium_server.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/utilities/selenium_grid/font_color +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/utilities/selenium_grid/grid-hub +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/utilities/selenium_grid/grid-node +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/utilities/selenium_grid/grid_hub.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/utilities/selenium_grid/grid_node.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/utilities/selenium_grid/register-grid-node.bat +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/utilities/selenium_grid/register-grid-node.sh +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/utilities/selenium_grid/start-grid-hub.bat +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/utilities/selenium_grid/start-grid-hub.sh +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/utilities/selenium_ide/__init__.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/utilities/selenium_ide/convert_ide.py +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase.egg-info/SOURCES.txt +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase.egg-info/dependency_links.txt +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase.egg-info/entry_points.txt +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase.egg-info/top_level.txt +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/setup.cfg +0 -0
- {seleniumbase-4.54.4 → seleniumbase-4.54.5}/virtualenv_install.sh +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: seleniumbase
|
|
3
|
-
Version: 4.54.
|
|
3
|
+
Version: 4.54.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
|
|
@@ -126,7 +126,7 @@ Requires-Dist: allure-pytest>=2.16.0; extra == "allure"
|
|
|
126
126
|
Requires-Dist: allure-python-commons>=2.16.0; extra == "allure"
|
|
127
127
|
Requires-Dist: allure-behave>=2.16.0; extra == "allure"
|
|
128
128
|
Provides-Extra: coverage
|
|
129
|
-
Requires-Dist: coverage>=7.16.
|
|
129
|
+
Requires-Dist: coverage>=7.16.1; extra == "coverage"
|
|
130
130
|
Requires-Dist: pytest-cov>=7.1.0; extra == "coverage"
|
|
131
131
|
Provides-Extra: flake8
|
|
132
132
|
Requires-Dist: flake8==7.3.0; extra == "flake8"
|
|
@@ -700,11 +700,11 @@ def click_element(
|
|
|
700
700
|
parent element.
|
|
701
701
|
|
|
702
702
|
Selection behavior:
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
703
|
+
- `nth` is 1-based and takes precedence over every other click mode.
|
|
704
|
+
- Otherwise, `all_matches=True` clicks every currently visible match.
|
|
705
|
+
- Otherwise, `only_if_visible=True` clicks only if a match is visible.
|
|
706
|
+
- Otherwise, `parent_selector` scopes the click to a nested element.
|
|
707
|
+
- With none of the above, performs a normal SeleniumBase click.
|
|
708
708
|
|
|
709
709
|
Args:
|
|
710
710
|
selector: CSS selector, XPath selector, or supported SeleniumBase
|
|
@@ -720,8 +720,8 @@ def click_element(
|
|
|
720
720
|
in order of appearance. Ignored when `nth` is provided. Use only
|
|
721
721
|
when multiple clicks are intentionally desired, such as for
|
|
722
722
|
clicking all the checkboxes in a section of a webpage.
|
|
723
|
-
If
|
|
724
|
-
cancelled.
|
|
723
|
+
If any of the click actions induces page navigation, then
|
|
724
|
+
subsequent clicks are cancelled without any exceptions raised.
|
|
725
725
|
|
|
726
726
|
only_if_visible: If True, click only when the target is already
|
|
727
727
|
visible; do not wait for it to become visible.
|
|
@@ -737,14 +737,23 @@ def click_element(
|
|
|
737
737
|
indexed click. Default: True.
|
|
738
738
|
|
|
739
739
|
Examples:
|
|
740
|
-
- Click
|
|
741
|
-
- Click the 2nd
|
|
742
|
-
- Click all
|
|
743
|
-
`click_element("
|
|
744
|
-
- Click
|
|
745
|
-
`click_element("
|
|
746
|
-
- Click inside
|
|
747
|
-
`click_element("
|
|
740
|
+
- Click the first button: `click_element("button")`
|
|
741
|
+
- Click the 2nd button: `click_element("button", nth=2)`
|
|
742
|
+
- Click all checkboxes:
|
|
743
|
+
`click_element('input[type="checkbox"]', all_matches=True)`
|
|
744
|
+
- Click the first visible link:
|
|
745
|
+
`click_element("a", only_if_visible=True)`
|
|
746
|
+
- Click the first button that's inside the first iframe:
|
|
747
|
+
`click_element("button", parent_selector="iframe")`
|
|
748
|
+
|
|
749
|
+
Error behavior:
|
|
750
|
+
With the exception of using 'only_if_visible=True', if there's no
|
|
751
|
+
matching element found within the timeout, then @handle_sb_errors
|
|
752
|
+
returns details from the exception raised.
|
|
753
|
+
|
|
754
|
+
When not to use:
|
|
755
|
+
- Do not use this tool if you need to hover an element first before
|
|
756
|
+
clicking; use hover_action with action="hover_and_click" instead.
|
|
748
757
|
"""
|
|
749
758
|
sb = _get_sb()
|
|
750
759
|
|
|
@@ -815,11 +824,15 @@ def hover_action(
|
|
|
815
824
|
Returns:
|
|
816
825
|
A confirmation message describing the performed operation's result.
|
|
817
826
|
|
|
818
|
-
|
|
827
|
+
Error behavior:
|
|
819
828
|
If a required element cannot be found or interacted with within the
|
|
820
829
|
applicable wait period, or if an error occurs during the action, the
|
|
821
830
|
resulting exception message is returned through @handle_sb_errors.
|
|
831
|
+
Failing actions such as failed hover_and_click will raise exceptions.
|
|
822
832
|
|
|
833
|
+
When not to use:
|
|
834
|
+
- Do not use this tool to click if you don't need to hover an element
|
|
835
|
+
before clicking another; use 'click' instead.
|
|
823
836
|
"""
|
|
824
837
|
sb = _get_sb()
|
|
825
838
|
|
|
@@ -1410,11 +1423,14 @@ def scroll_page(
|
|
|
1410
1423
|
up/down scrolling. For example, amount=25 scrolls approximately
|
|
1411
1424
|
one quarter of the viewport height.
|
|
1412
1425
|
|
|
1413
|
-
|
|
1414
|
-
|
|
1426
|
+
Notes:
|
|
1427
|
+
Values greater than 100 for `amount` are allowed.
|
|
1428
|
+
For example, 200 means approximately two viewport heights.
|
|
1415
1429
|
|
|
1416
|
-
|
|
1417
|
-
|
|
1430
|
+
Tool selection:
|
|
1431
|
+
- Need to reveal a specific element ->
|
|
1432
|
+
use 'focus_element' with action="scroll_to_element".
|
|
1433
|
+
- Need to scroll the page by a relative amount -> use 'scroll_page'.
|
|
1418
1434
|
"""
|
|
1419
1435
|
sb = _get_sb()
|
|
1420
1436
|
|
|
@@ -1475,8 +1491,9 @@ def manage_window(
|
|
|
1475
1491
|
|
|
1476
1492
|
height: Window height for "set_rect".
|
|
1477
1493
|
|
|
1478
|
-
|
|
1479
|
-
|
|
1494
|
+
Notes:
|
|
1495
|
+
Use this tool for browser-window geometry and state.
|
|
1496
|
+
Use `manage_tabs` for switching between browser tabs.
|
|
1480
1497
|
"""
|
|
1481
1498
|
sb = _get_sb()
|
|
1482
1499
|
|
|
@@ -1507,12 +1524,12 @@ def manage_window(
|
|
|
1507
1524
|
@handle_sb_errors
|
|
1508
1525
|
def manage_tabs(
|
|
1509
1526
|
action: Literal[
|
|
1510
|
-
"
|
|
1511
|
-
"
|
|
1512
|
-
"
|
|
1513
|
-
"
|
|
1514
|
-
"
|
|
1515
|
-
] = "
|
|
1527
|
+
"list_tabs",
|
|
1528
|
+
"open_new_tab",
|
|
1529
|
+
"switch_to_tab",
|
|
1530
|
+
"switch_to_newest_tab",
|
|
1531
|
+
"close_active_tab",
|
|
1532
|
+
] = "list_tabs",
|
|
1516
1533
|
url: str | None = None,
|
|
1517
1534
|
tab_index: int | None = None,
|
|
1518
1535
|
switch_to: bool = True,
|
|
@@ -1524,25 +1541,34 @@ def manage_tabs(
|
|
|
1524
1541
|
|
|
1525
1542
|
Args:
|
|
1526
1543
|
action:
|
|
1527
|
-
- "
|
|
1528
|
-
Use this to find the tab_index for "
|
|
1529
|
-
- "
|
|
1530
|
-
- "
|
|
1531
|
-
- "
|
|
1532
|
-
- "
|
|
1544
|
+
- "list_tabs": Return each tab's index, URL, and title.
|
|
1545
|
+
Use this to find the tab_index for "switch_to_tab".
|
|
1546
|
+
- "open_new_tab": Open a new tab, optionally navigating to `url`.
|
|
1547
|
+
- "switch_to_tab": Switch to the tab at tab_index from "list_tabs".
|
|
1548
|
+
- "switch_to_newest_tab": Switch to the newest tab.
|
|
1549
|
+
- "close_active_tab": Close the active tab. This action must be
|
|
1550
|
+
followed by a 'manage_tabs' action that switches to a new
|
|
1551
|
+
tab, such as "switch_to_tab" or "switch_to_newest_tab".
|
|
1552
|
+
|
|
1553
|
+
url: URL for "open_new_tab". If not provided, "about:blank" is used.
|
|
1533
1554
|
|
|
1534
|
-
|
|
1555
|
+
tab_index: Tab index from "list_tabs" that is only used for the
|
|
1556
|
+
"switch_to_tab" action.)
|
|
1535
1557
|
|
|
1536
|
-
|
|
1558
|
+
switch_to: If using "open_new_tab", switch to the new tab when True.
|
|
1537
1559
|
|
|
1538
|
-
|
|
1560
|
+
Notes:
|
|
1561
|
+
Tab indexes are session-relative and may change after tabs are opened
|
|
1562
|
+
or closed. Use "list_tabs" to get current indexes before switching
|
|
1563
|
+
by index.
|
|
1539
1564
|
|
|
1540
|
-
|
|
1541
|
-
|
|
1565
|
+
Error behavior:
|
|
1566
|
+
If there's an error during any of the tab actions, then
|
|
1567
|
+
@handle_sb_errors will propagate the exception as an error message.
|
|
1542
1568
|
"""
|
|
1543
1569
|
sb = _get_sb()
|
|
1544
1570
|
|
|
1545
|
-
if action == "
|
|
1571
|
+
if action == "list_tabs":
|
|
1546
1572
|
tabs = sb.get_tabs()
|
|
1547
1573
|
return [
|
|
1548
1574
|
{
|
|
@@ -1553,11 +1579,13 @@ def manage_tabs(
|
|
|
1553
1579
|
for i, t in enumerate(tabs)
|
|
1554
1580
|
]
|
|
1555
1581
|
|
|
1556
|
-
if action == "
|
|
1582
|
+
if action == "open_new_tab":
|
|
1583
|
+
if not url:
|
|
1584
|
+
url = "about:blank"
|
|
1557
1585
|
sb.open_new_tab(url=url, switch_to=switch_to)
|
|
1558
1586
|
return f"Opened new tab (url={url!r}, switch_to={switch_to})"
|
|
1559
1587
|
|
|
1560
|
-
if action == "
|
|
1588
|
+
if action == "switch_to_tab":
|
|
1561
1589
|
if tab_index is None:
|
|
1562
1590
|
return (
|
|
1563
1591
|
"Error: action='switch' requires tab_index "
|
|
@@ -1575,17 +1603,17 @@ def manage_tabs(
|
|
|
1575
1603
|
sb.switch_to_tab(tabs[tab_index])
|
|
1576
1604
|
return f"Switched to tab {tab_index}"
|
|
1577
1605
|
|
|
1578
|
-
if action == "
|
|
1606
|
+
if action == "switch_to_newest_tab":
|
|
1579
1607
|
sb.switch_to_newest_tab()
|
|
1580
1608
|
return "Switched to newest tab."
|
|
1581
1609
|
|
|
1582
|
-
if action == "
|
|
1610
|
+
if action == "close_active_tab":
|
|
1583
1611
|
sb.close_active_tab()
|
|
1584
1612
|
return "Closed active tab."
|
|
1585
1613
|
|
|
1586
1614
|
return (
|
|
1587
|
-
f"Error: unknown action '{action}'. Use '
|
|
1588
|
-
f"'
|
|
1615
|
+
f"Error: unknown action '{action}'. Use 'list_tabs', 'open_new_tab', "
|
|
1616
|
+
f"'switch_to_tab', 'switch_to_newest_tab', or 'close_active_tab'."
|
|
1589
1617
|
)
|
|
1590
1618
|
|
|
1591
1619
|
|
|
@@ -1601,12 +1629,12 @@ def solve_captcha() -> str:
|
|
|
1601
1629
|
|
|
1602
1630
|
This tool attempts to interact with CAPTCHA controls such as Cloudflare
|
|
1603
1631
|
Turnstile, reCAPTCHA, hCaptcha, DataDome Slider, or FriendlyCaptcha via
|
|
1604
|
-
the Chrome DevTools Protocol (CDP), which is stealthier than
|
|
1605
|
-
|
|
1632
|
+
the Chrome DevTools Protocol (CDP), which is usually stealthier than
|
|
1633
|
+
JavaScript because CDP actions can avoid triggering `isTrusted: false`.
|
|
1606
1634
|
|
|
1607
1635
|
This tool automatically detects the coordinates of CAPTCHA checkboxes
|
|
1608
1636
|
for determining the correct location to perform the click. If no CAPTCHA
|
|
1609
|
-
is detected on the current page, then no click action is
|
|
1637
|
+
is detected on the current page, then no click action is attempted.
|
|
1610
1638
|
|
|
1611
1639
|
The tool does not guarantee that the CAPTCHA was solved. Some CAPTCHA
|
|
1612
1640
|
controls are embedded inside shadow DOM or otherwise do not expose an
|
|
@@ -1616,13 +1644,13 @@ def solve_captcha() -> str:
|
|
|
1616
1644
|
Tool workflow:
|
|
1617
1645
|
1. Inspect the webpage with get_content when you need to
|
|
1618
1646
|
determine whether CAPTCHA-related controls are present.
|
|
1619
|
-
2. Call solve_captcha to attempt the CAPTCHA interaction.
|
|
1620
|
-
3. Use get_page_info, get_content, check_if_condition,
|
|
1621
|
-
or manage_cookies to inspect resulting page/session state.
|
|
1647
|
+
2. Call 'solve_captcha' to attempt the CAPTCHA interaction.
|
|
1648
|
+
3. Use 'get_page_info', 'get_content', 'check_if_condition',
|
|
1649
|
+
or 'manage_cookies' to inspect resulting page/session state.
|
|
1622
1650
|
|
|
1623
1651
|
Returns:
|
|
1624
1652
|
A message confirming that the CAPTCHA interaction was attempted.
|
|
1625
|
-
|
|
1653
|
+
The message is the same for both successful and failed attempts.
|
|
1626
1654
|
"""
|
|
1627
1655
|
sb = _get_sb()
|
|
1628
1656
|
sb.solve_captcha()
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
# seleniumbase package
|
|
2
|
-
__version__ = "4.54.
|
|
2
|
+
__version__ = "4.54.5"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: seleniumbase
|
|
3
|
-
Version: 4.54.
|
|
3
|
+
Version: 4.54.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
|
|
@@ -126,7 +126,7 @@ Requires-Dist: allure-pytest>=2.16.0; extra == "allure"
|
|
|
126
126
|
Requires-Dist: allure-python-commons>=2.16.0; extra == "allure"
|
|
127
127
|
Requires-Dist: allure-behave>=2.16.0; extra == "allure"
|
|
128
128
|
Provides-Extra: coverage
|
|
129
|
-
Requires-Dist: coverage>=7.16.
|
|
129
|
+
Requires-Dist: coverage>=7.16.1; extra == "coverage"
|
|
130
130
|
Requires-Dist: pytest-cov>=7.1.0; extra == "coverage"
|
|
131
131
|
Provides-Extra: flake8
|
|
132
132
|
Requires-Dist: flake8==7.3.0; extra == "flake8"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/drivers/chromium_drivers/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/undetected/cdp_driver/_contradict.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/undetected/cdp_driver/connection.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/utilities/selenium_grid/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/utilities/selenium_grid/grid_hub.py
RENAMED
|
File without changes
|
{seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/utilities/selenium_grid/grid_node.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/utilities/selenium_grid/start-grid-hub.bat
RENAMED
|
File without changes
|
{seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/utilities/selenium_grid/start-grid-hub.sh
RENAMED
|
File without changes
|
|
File without changes
|
{seleniumbase-4.54.4 → seleniumbase-4.54.5}/seleniumbase/utilities/selenium_ide/convert_ide.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|