Jarvis-Brain 0.1.11.12__tar.gz → 0.1.12.1__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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: Jarvis_Brain
3
- Version: 0.1.11.12
3
+ Version: 0.1.12.1
4
4
  Summary: Jarvis brain mcp
5
5
  Requires-Python: >=3.10
6
6
  Requires-Dist: beautifulsoup4
@@ -314,6 +314,39 @@ def register_scroll_action(mcp: FastMCP, browser_manager):
314
314
  )
315
315
 
316
316
 
317
+ def register_mouse_hover(mcp: FastMCP, browser_manager):
318
+ @mcp.tool(name="scroll_action", description="将鼠标悬停在元素上【这个功能使用了Drissionpage的action行为链功能】")
319
+ async def mouse_hover(browser_port: int, tab_id: str, css_selector: str, target_element_index: int = 0) -> dict[
320
+ str, Any]:
321
+ _browser = browser_manager.get_browser(browser_port)
322
+ target_tab = _browser.get_tab(tab_id)
323
+ css_selector = css_selector
324
+ if "css:" not in css_selector:
325
+ css_selector = "css:" + css_selector
326
+ target_eles = target_tab.eles(css_selector)
327
+ target_element = target_eles[target_element_index]
328
+ try:
329
+ target_tab.actions.move_to(target_element)
330
+ target_element.hover()
331
+ hover_success = True
332
+ except Exception as e:
333
+ hover_success = False
334
+ if target_element_index > 0:
335
+ message = f"tab页:【{tab_id}】hover【{css_selector}】【index={target_element_index}】的元素 {'成功' if hover_success else '失败'} 了"
336
+ else:
337
+ message = f"tab页:【{tab_id}】hover【{css_selector}】 {'成功' if hover_success else '失败'} 了"
338
+ # else:
339
+ # message = f"tab页:【{tab_id}】传入的css_selector找到了{len(target_eles)}个元素,请确保传入的css_selector可以找到唯一的一个元素"
340
+ return dp_mcp_message_pack(
341
+ message=message,
342
+ browser_port=browser_port,
343
+ tab_id=tab_id,
344
+ css_selector=css_selector,
345
+ hoversuccess=hover_success,
346
+ extra_message="hover成功,页面可能有更新,请重新获取页面html,并重新分析页面Selector" if hover_success else ""
347
+ )
348
+
349
+
317
350
  def register_get_screenshot(mcp: FastMCP, browser_manager):
318
351
  @mcp.tool(name="get_tab_screenshot",
319
352
  description="尝试对传入tab页进行截图,并将截图压缩为1M大小png图片,会返回截图保存路径")
@@ -24,6 +24,7 @@ if "TeamNode-Dp" in enabled_modules:
24
24
  # 页面交互
25
25
  register_click_action(mcp, browser_manager)
26
26
  register_scroll_action(mcp, browser_manager)
27
+ register_mouse_hover(mcp, browser_manager)
27
28
 
28
29
  if "JarvisNode" in enabled_modules:
29
30
  register_assert_waf(mcp, browser_manager)
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "Jarvis_Brain" # 别人下载时用的名字,必须在 PyPI 上唯一
3
- version = "0.1.11.12"
3
+ version = "0.1.12.1"
4
4
  description = "Jarvis brain mcp"
5
5
  dependencies = [
6
6
  "fastmcp",