Jarvis-Brain 0.1.13.8__tar.gz → 0.1.13.10__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.
- {jarvis_brain-0.1.13.8 → jarvis_brain-0.1.13.10}/PKG-INFO +1 -1
- {jarvis_brain-0.1.13.8 → jarvis_brain-0.1.13.10}/mcp_tools/dp_tools.py +38 -30
- {jarvis_brain-0.1.13.8 → jarvis_brain-0.1.13.10}/pyproject.toml +1 -1
- {jarvis_brain-0.1.13.8 → jarvis_brain-0.1.13.10}/tools/tools.py +2 -2
- {jarvis_brain-0.1.13.8 → jarvis_brain-0.1.13.10}/.gitignore +0 -0
- {jarvis_brain-0.1.13.8 → jarvis_brain-0.1.13.10}/README.md +0 -0
- {jarvis_brain-0.1.13.8 → jarvis_brain-0.1.13.10}/mcp_tools/__init__.py +0 -0
- {jarvis_brain-0.1.13.8 → jarvis_brain-0.1.13.10}/mcp_tools/main.py +0 -0
- {jarvis_brain-0.1.13.8 → jarvis_brain-0.1.13.10}/tools/__init__.py +0 -0
- {jarvis_brain-0.1.13.8 → jarvis_brain-0.1.13.10}/tools/browser_manager.py +0 -0
- {jarvis_brain-0.1.13.8 → jarvis_brain-0.1.13.10}/tools/browser_proxy.py +0 -0
- {jarvis_brain-0.1.13.8 → jarvis_brain-0.1.13.10}/uv.lock +0 -0
|
@@ -7,7 +7,7 @@ import os
|
|
|
7
7
|
import time
|
|
8
8
|
from typing import Any
|
|
9
9
|
|
|
10
|
-
import
|
|
10
|
+
from DrissionPage.errors import NoRectError
|
|
11
11
|
from fastmcp import FastMCP
|
|
12
12
|
|
|
13
13
|
from tools.browser_manager import BrowserManager
|
|
@@ -386,36 +386,44 @@ def register_get_ele_info(mcp: FastMCP, browser_manager):
|
|
|
386
386
|
css_selector=css_selector,
|
|
387
387
|
element_index=element_index,
|
|
388
388
|
)
|
|
389
|
-
has_rect = target_element.states.has_rect,
|
|
390
|
-
element_rect_size = tuple()
|
|
391
|
-
if not has_rect:
|
|
392
|
-
element_rect_size = target_element.rect.size,
|
|
393
389
|
try:
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
390
|
+
has_rect = target_element.states.has_rect,
|
|
391
|
+
element_rect_size = tuple()
|
|
392
|
+
if not has_rect:
|
|
393
|
+
element_rect_size = target_element.rect.size,
|
|
394
|
+
try:
|
|
395
|
+
child_count=target_element.child_count
|
|
396
|
+
except Exception:
|
|
397
|
+
child_count=0
|
|
398
|
+
return dp_mcp_message_pack(
|
|
399
|
+
message="元素可以被正常的选择到,以下是元素相关的一系列信息",
|
|
400
|
+
browser_port=browser_port,
|
|
401
|
+
tab_id=tab_id,
|
|
402
|
+
css_selector=css_selector,
|
|
403
|
+
element_index=element_index,
|
|
404
|
+
element_tag=target_element.tag,
|
|
405
|
+
element_attrs_key=list(target_element.attrs.keys()),
|
|
406
|
+
element_child_count=child_count,
|
|
407
|
+
element_rect_size=element_rect_size,
|
|
408
|
+
is_in_viewport=target_element.states.is_in_viewport,
|
|
409
|
+
is_whole_in_viewport=target_element.states.is_whole_in_viewport,
|
|
410
|
+
is_alive=target_element.states.is_alive,
|
|
411
|
+
is_checked=target_element.states.is_checked,
|
|
412
|
+
is_selected=target_element.states.is_selected,
|
|
413
|
+
is_enabled=target_element.states.is_enabled,
|
|
414
|
+
is_displayed=target_element.states.is_displayed,
|
|
415
|
+
is_covered=target_element.states.is_covered,
|
|
416
|
+
is_clickable=target_element.states.is_clickable,
|
|
417
|
+
has_rect=has_rect
|
|
418
|
+
)
|
|
419
|
+
except NoRectError:
|
|
420
|
+
return dp_mcp_message_pack(
|
|
421
|
+
message="报错:NoRectError: 该元素没有位置及大小。你传入的css_selector和element_index选出的元素没有rect,请确认该元素是否可见",
|
|
422
|
+
browser_port=browser_port,
|
|
423
|
+
tab_id=tab_id,
|
|
424
|
+
css_selector=css_selector,
|
|
425
|
+
element_index=element_index,
|
|
426
|
+
)
|
|
419
427
|
|
|
420
428
|
def register_get_screenshot(mcp: FastMCP, browser_manager):
|
|
421
429
|
@mcp.tool(name="get_tab_screenshot",
|
|
@@ -102,11 +102,11 @@ function getSimplifiedDOM(node) {
|
|
|
102
102
|
return getSimplifiedDOM(document.body);
|
|
103
103
|
"""
|
|
104
104
|
|
|
105
|
-
# 我自己优化后的版本,逻辑为:删除不可见元素、标签的任何属性value的长度大于
|
|
105
|
+
# 我自己优化后的版本,逻辑为:删除不可见元素、标签的任何属性value的长度大于30时直接删除这个属性、id和class采用简写方式:id=>#,class=>.
|
|
106
106
|
compress_html_js="""
|
|
107
107
|
function getSimplifiedDOM(node) {
|
|
108
108
|
// 全局配置:最大属性值长度
|
|
109
|
-
const MAX_ATTR_LEN =
|
|
109
|
+
const MAX_ATTR_LEN = 30;
|
|
110
110
|
|
|
111
111
|
// 1. 处理文本节点
|
|
112
112
|
if (node.nodeType === Node.TEXT_NODE) {
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|