seleniumbase 4.53.3__tar.gz → 4.53.4__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.53.3/seleniumbase.egg-info → seleniumbase-4.53.4}/PKG-INFO +2 -2
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/mcp_servers/server.py +86 -60
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/requirements.txt +1 -1
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/__version__.py +1 -1
- {seleniumbase-4.53.3 → seleniumbase-4.53.4/seleniumbase.egg-info}/PKG-INFO +2 -2
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase.egg-info/requires.txt +1 -1
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/setup.py +1 -1
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/.gitignore +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/LICENSE +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/MANIFEST.in +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/README.md +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/install.sh +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/mcp_servers/__init__.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/pyproject.toml +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/pytest.ini +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/sbase/__init__.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/sbase/__main__.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/sbase/steps.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/__init__.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/__main__.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/behave/__init__.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/behave/behave_helper.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/behave/behave_sb.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/behave/steps.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/common/__init__.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/common/decorators.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/common/encryption.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/common/exceptions.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/common/obfuscate.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/common/unobfuscate.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/config/__init__.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/config/ad_block_list.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/config/proxy_list.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/config/settings.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/console_scripts/__init__.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/console_scripts/logo_helper.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/console_scripts/rich_helper.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/console_scripts/run.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/console_scripts/sb_behave_gui.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/console_scripts/sb_caseplans.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/console_scripts/sb_commander.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/console_scripts/sb_install.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/console_scripts/sb_mkchart.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/console_scripts/sb_mkdir.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/console_scripts/sb_mkfile.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/console_scripts/sb_mkpres.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/console_scripts/sb_mkrec.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/console_scripts/sb_objectify.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/console_scripts/sb_print.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/console_scripts/sb_recorder.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/core/__init__.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/core/application_manager.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/core/browser_launcher.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/core/capabilities_parser.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/core/colored_traceback.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/core/create_db_tables.sql +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/core/detect_b_ver.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/core/download_helper.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/core/encoded_images.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/core/jqc_helper.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/core/log_helper.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/core/mysql.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/core/nest_asyncio.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/core/proxy_helper.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/core/recorder_helper.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/core/report_helper.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/core/s3_manager.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/core/sb_cdp.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/core/sb_driver.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/core/session_helper.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/core/settings_parser.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/core/style_sheet.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/core/testcase_manager.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/core/tour_helper.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/core/visual_helper.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/drivers/__init__.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/drivers/brave_drivers/__init__.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/drivers/cft_drivers/__init__.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/drivers/chromium_drivers/__init__.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/drivers/chs_drivers/__init__.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/drivers/comet_drivers/__init__.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/drivers/opera_drivers/__init__.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/extensions/__init__.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/extensions/ad_block.zip +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/extensions/disable_csp.zip +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/extensions/recorder.zip +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/extensions/sbase_ext.zip +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/fixtures/__init__.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/fixtures/base_case.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/fixtures/constants.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/fixtures/css_to_xpath.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/fixtures/errors.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/fixtures/js_utils.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/fixtures/page_actions.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/fixtures/page_utils.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/fixtures/shared_utils.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/fixtures/unittest_helper.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/fixtures/words.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/fixtures/xpath_to_css.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/js_code/__init__.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/js_code/active_css_js.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/js_code/live_js.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/js_code/recorder_js.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/masterqa/__init__.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/masterqa/master_qa.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/plugins/__init__.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/plugins/base_plugin.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/plugins/basic_test_info.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/plugins/db_reporting_plugin.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/plugins/driver_manager.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/plugins/page_source.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/plugins/pytest_plugin.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/plugins/s3_logging_plugin.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/plugins/sb_manager.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/plugins/screen_shots.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/plugins/selenium_plugin.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/resources/__init__.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/translate/__init__.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/translate/chinese.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/translate/dutch.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/translate/french.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/translate/italian.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/translate/japanese.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/translate/korean.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/translate/master_dict.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/translate/portuguese.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/translate/russian.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/translate/spanish.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/translate/translator.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/undetected/__init__.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/undetected/cdp.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/undetected/cdp_driver/__init__.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/undetected/cdp_driver/_contradict.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/undetected/cdp_driver/browser.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/undetected/cdp_driver/cdp_util.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/undetected/cdp_driver/config.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/undetected/cdp_driver/connection.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/undetected/cdp_driver/element.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/undetected/cdp_driver/tab.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/undetected/dprocess.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/undetected/options.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/undetected/patcher.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/undetected/reactor.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/undetected/webelement.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/utilities/__init__.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/utilities/selenium_grid/__init__.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/utilities/selenium_grid/download_selenium_server.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/utilities/selenium_grid/font_color +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/utilities/selenium_grid/grid-hub +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/utilities/selenium_grid/grid-node +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/utilities/selenium_grid/grid_hub.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/utilities/selenium_grid/grid_node.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/utilities/selenium_grid/register-grid-node.bat +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/utilities/selenium_grid/register-grid-node.sh +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/utilities/selenium_grid/start-grid-hub.bat +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/utilities/selenium_grid/start-grid-hub.sh +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/utilities/selenium_ide/__init__.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/utilities/selenium_ide/convert_ide.py +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase.egg-info/SOURCES.txt +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase.egg-info/dependency_links.txt +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase.egg-info/entry_points.txt +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase.egg-info/top_level.txt +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/setup.cfg +0 -0
- {seleniumbase-4.53.3 → seleniumbase-4.53.4}/virtualenv_install.sh +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: seleniumbase
|
|
3
|
-
Version: 4.53.
|
|
3
|
+
Version: 4.53.4
|
|
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
|
|
@@ -71,7 +71,7 @@ Requires-Dist: filelock>=3.32.5
|
|
|
71
71
|
Requires-Dist: fasteners>=0.20
|
|
72
72
|
Requires-Dist: mycdp>=1.4.0
|
|
73
73
|
Requires-Dist: pynose>=1.5.5
|
|
74
|
-
Requires-Dist: platformdirs>=4.11.
|
|
74
|
+
Requires-Dist: platformdirs>=4.11.7
|
|
75
75
|
Requires-Dist: typing-extensions>=4.16.0
|
|
76
76
|
Requires-Dist: sbvirtualdisplay>=1.4.0
|
|
77
77
|
Requires-Dist: MarkupSafe>=3.0.3
|
|
@@ -32,14 +32,8 @@ Tool-selection philosophy:
|
|
|
32
32
|
- Use wait_for when the agent needs to wait for a condition to become true.
|
|
33
33
|
- Use assert_that when the agent needs to verify an expected condition and
|
|
34
34
|
treat failure as an assertion error.
|
|
35
|
-
- Use click/fill_input/select_option/
|
|
36
|
-
|
|
37
|
-
Note on elements: CDP-mode element objects (from find_element/find_all) are
|
|
38
|
-
live handles with their own methods (.click(), .get_html(), ...) that can't
|
|
39
|
-
cross the MCP boundary as stateful objects. Tools here resolve elements
|
|
40
|
-
immediately to plain dicts (tag, text, html) rather than returning handles.
|
|
41
|
-
To act on one of several matches, use click(selector, nth=...) rather than
|
|
42
|
-
find + click.
|
|
35
|
+
- Use click/fill_input/select_option/hover_with_action/focus_on for
|
|
36
|
+
interactions and element positioning.
|
|
43
37
|
"""
|
|
44
38
|
from __future__ import annotations
|
|
45
39
|
import atexit
|
|
@@ -708,54 +702,84 @@ def click(
|
|
|
708
702
|
|
|
709
703
|
@mcp.tool()
|
|
710
704
|
@handle_sb_errors
|
|
711
|
-
def
|
|
712
|
-
|
|
713
|
-
|
|
705
|
+
def hover_with_action(
|
|
706
|
+
selector1: str,
|
|
707
|
+
selector2: str | None = None,
|
|
708
|
+
action: Literal[
|
|
709
|
+
"none",
|
|
710
|
+
"click",
|
|
711
|
+
"drag_and_drop",
|
|
712
|
+
] = "none",
|
|
714
713
|
) -> str:
|
|
715
|
-
"""Hover over an element, optionally
|
|
714
|
+
"""Hover over an element, optionally click another element, or drag-&-drop.
|
|
716
715
|
|
|
717
|
-
Use this for
|
|
718
|
-
|
|
716
|
+
Use this tool for hover interactions, hover-triggered menus, and
|
|
717
|
+
drag-and-drop operations.
|
|
719
718
|
|
|
720
719
|
Args:
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
Useful for a submenu item or dropdown option revealed by hover.
|
|
720
|
+
selector1:
|
|
721
|
+
The primary element selector.
|
|
724
722
|
|
|
725
|
-
|
|
726
|
-
A confirmation describing the hover/click operation.
|
|
727
|
-
"""
|
|
728
|
-
sb = _get_sb()
|
|
723
|
+
For action="none", this is the element to hover over.
|
|
729
724
|
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
return f"Hovered {selector} and clicked {then_click_selector}"
|
|
725
|
+
For action="click", this is the element to hover over before
|
|
726
|
+
clicking selector2.
|
|
733
727
|
|
|
734
|
-
|
|
735
|
-
return f"Hovered {selector}"
|
|
728
|
+
For action="drag_and_drop", this is the draggable source element.
|
|
736
729
|
|
|
730
|
+
selector2:
|
|
731
|
+
The secondary element selector.
|
|
737
732
|
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
def drag_and_drop(
|
|
741
|
-
source_selector: str,
|
|
742
|
-
target_selector: str,
|
|
743
|
-
) -> str:
|
|
744
|
-
"""Drag a draggable element and drop it onto another element.
|
|
733
|
+
Required for action="click", where it identifies the element
|
|
734
|
+
revealed or targeted after hovering selector1.
|
|
745
735
|
|
|
746
|
-
|
|
747
|
-
|
|
736
|
+
Required for action="drag_and_drop", where it identifies the
|
|
737
|
+
destination/drop target.
|
|
748
738
|
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
739
|
+
Not used for action="none".
|
|
740
|
+
|
|
741
|
+
action:
|
|
742
|
+
- "none": Hover over selector1 only.
|
|
743
|
+
- "click": Hover over selector1, then click selector2.
|
|
744
|
+
- "drag_and_drop": Drag selector1 and drop it onto selector2.
|
|
745
|
+
|
|
746
|
+
Returns:
|
|
747
|
+
A confirmation describing the performed operation.
|
|
748
|
+
|
|
749
|
+
Tool selection:
|
|
750
|
+
- Simple hover -> action="none".
|
|
751
|
+
- Hover over one element and then click another -> action="click".
|
|
752
|
+
- Drag one element onto another -> action="drag_and_drop".
|
|
753
|
+
|
|
754
|
+
Notes:
|
|
755
|
+
For action="click", selector1 is the hover target and selector2 is
|
|
756
|
+
the click target.
|
|
752
757
|
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
pointerup.
|
|
758
|
+
For action="drag_and_drop", selector1 is the source and selector2
|
|
759
|
+
is the destination.
|
|
756
760
|
"""
|
|
757
|
-
_get_sb()
|
|
758
|
-
|
|
761
|
+
sb = _get_sb()
|
|
762
|
+
|
|
763
|
+
if action == "none":
|
|
764
|
+
sb.hover_element(selector1)
|
|
765
|
+
return f"Hovered {selector1}"
|
|
766
|
+
|
|
767
|
+
if action == "click":
|
|
768
|
+
if selector2 is None:
|
|
769
|
+
return "Error: action='click' requires selector2."
|
|
770
|
+
sb.hover_and_click(selector1, selector2)
|
|
771
|
+
return f"Hovered {selector1} and clicked {selector2}"
|
|
772
|
+
|
|
773
|
+
if action == "drag_and_drop":
|
|
774
|
+
if selector2 is None:
|
|
775
|
+
return "Error: action='drag_and_drop' requires selector2."
|
|
776
|
+
sb.drag_and_drop(selector1, selector2)
|
|
777
|
+
return f"Dragged {selector1} onto {selector2}"
|
|
778
|
+
|
|
779
|
+
return (
|
|
780
|
+
f"Error: unknown action '{action}'. "
|
|
781
|
+
"Use 'none', 'click', or 'drag_and_drop'."
|
|
782
|
+
)
|
|
759
783
|
|
|
760
784
|
|
|
761
785
|
@mcp.tool()
|
|
@@ -860,50 +884,52 @@ def select_option(
|
|
|
860
884
|
|
|
861
885
|
@mcp.tool()
|
|
862
886
|
@handle_sb_errors
|
|
863
|
-
def
|
|
887
|
+
def focus_on(
|
|
864
888
|
selector: str,
|
|
865
889
|
action: Literal[
|
|
890
|
+
"scroll_to_element",
|
|
866
891
|
"focus",
|
|
867
892
|
"highlight",
|
|
868
|
-
|
|
869
|
-
] = "focus",
|
|
893
|
+
] = "scroll_to_element",
|
|
870
894
|
) -> str:
|
|
871
|
-
"""
|
|
895
|
+
"""Scroll to, focus, or highlight an element.
|
|
872
896
|
|
|
873
|
-
Use this tool when an element needs to be
|
|
874
|
-
|
|
897
|
+
Use this tool when an element needs to be brought into view, focused for
|
|
898
|
+
keyboard interaction, or highlighted for debugging/demonstration.
|
|
875
899
|
|
|
876
900
|
This tool does NOT click, type into, select from, hover over, or otherwise
|
|
877
901
|
activate the element.
|
|
878
902
|
|
|
879
903
|
Args:
|
|
880
904
|
selector: CSS selector or SeleniumBase selector identifying the target.
|
|
905
|
+
|
|
881
906
|
action:
|
|
907
|
+
- "scroll_to_element": Scroll the page until the element is in
|
|
908
|
+
the current viewport. This is the default action.
|
|
882
909
|
- "focus": Move keyboard focus to the element.
|
|
883
910
|
- "highlight": Temporarily highlight the element for debugging or
|
|
884
911
|
demonstration. This can affect timing and may reduce stealth.
|
|
885
|
-
- "scroll_into_view": Scroll the page until the element is in the
|
|
886
|
-
current viewport.
|
|
887
912
|
|
|
888
913
|
Tool selection:
|
|
914
|
+
- Bring an element into view -> use focus_on with the default action.
|
|
915
|
+
- Focus an element -> use focus_on(action="focus").
|
|
916
|
+
- Highlight element for debugging -> use focus_on(action="highlight").
|
|
889
917
|
- Click -> use click.
|
|
890
918
|
- Type into a form control -> use fill_input.
|
|
891
|
-
- Hover -> use
|
|
892
|
-
- Focus, highlight, or scroll without activating -> use
|
|
893
|
-
act_on_element.
|
|
919
|
+
- Hover -> use hover_with_action.
|
|
894
920
|
"""
|
|
895
921
|
sb = _get_sb()
|
|
896
922
|
|
|
897
|
-
if action == "
|
|
923
|
+
if action == "scroll_to_element":
|
|
924
|
+
sb.scroll_into_view(selector)
|
|
925
|
+
elif action == "focus":
|
|
898
926
|
sb.find_element(selector).focus()
|
|
899
927
|
elif action == "highlight":
|
|
900
928
|
sb.highlight(selector)
|
|
901
|
-
elif action == "scroll_into_view":
|
|
902
|
-
sb.scroll_into_view(selector)
|
|
903
929
|
else:
|
|
904
930
|
return (
|
|
905
931
|
f"Error: unknown action '{action}'. "
|
|
906
|
-
"Use '
|
|
932
|
+
"Use 'scroll_to_element', 'focus', or 'highlight'."
|
|
907
933
|
)
|
|
908
934
|
|
|
909
935
|
return f"{action} done for {selector}"
|
|
@@ -1221,8 +1247,8 @@ def scroll(
|
|
|
1221
1247
|
up/down scrolling. For example, amount=25 scrolls approximately
|
|
1222
1248
|
one quarter of the viewport height.
|
|
1223
1249
|
|
|
1224
|
-
Use
|
|
1225
|
-
|
|
1250
|
+
Use focus_on(action="scroll_to_element") when the goal is to reveal a
|
|
1251
|
+
specific element rather than scroll the page by a relative amount.
|
|
1226
1252
|
"""
|
|
1227
1253
|
sb = _get_sb()
|
|
1228
1254
|
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
# seleniumbase package
|
|
2
|
-
__version__ = "4.53.
|
|
2
|
+
__version__ = "4.53.4"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: seleniumbase
|
|
3
|
-
Version: 4.53.
|
|
3
|
+
Version: 4.53.4
|
|
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
|
|
@@ -71,7 +71,7 @@ Requires-Dist: filelock>=3.32.5
|
|
|
71
71
|
Requires-Dist: fasteners>=0.20
|
|
72
72
|
Requires-Dist: mycdp>=1.4.0
|
|
73
73
|
Requires-Dist: pynose>=1.5.5
|
|
74
|
-
Requires-Dist: platformdirs>=4.11.
|
|
74
|
+
Requires-Dist: platformdirs>=4.11.7
|
|
75
75
|
Requires-Dist: typing-extensions>=4.16.0
|
|
76
76
|
Requires-Dist: sbvirtualdisplay>=1.4.0
|
|
77
77
|
Requires-Dist: MarkupSafe>=3.0.3
|
|
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.53.3 → seleniumbase-4.53.4}/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.53.3 → seleniumbase-4.53.4}/seleniumbase/undetected/cdp_driver/_contradict.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{seleniumbase-4.53.3 → seleniumbase-4.53.4}/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.53.3 → seleniumbase-4.53.4}/seleniumbase/utilities/selenium_grid/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/utilities/selenium_grid/grid_hub.py
RENAMED
|
File without changes
|
{seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/utilities/selenium_grid/grid_node.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/utilities/selenium_grid/start-grid-hub.bat
RENAMED
|
File without changes
|
{seleniumbase-4.53.3 → seleniumbase-4.53.4}/seleniumbase/utilities/selenium_grid/start-grid-hub.sh
RENAMED
|
File without changes
|
|
File without changes
|
{seleniumbase-4.53.3 → seleniumbase-4.53.4}/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
|