mobile-mcp-ai 2.7.4__py3-none-any.whl → 2.7.5__py3-none-any.whl

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.
@@ -3328,7 +3328,7 @@ class BasicMobileToolsLite:
3328
3328
  pass
3329
3329
 
3330
3330
  if not close_candidates:
3331
- # 兜底策略:如果检测到弹窗但未找到关闭按钮,且页面元素很少(只有1个可点击元素),直接点击它
3331
+ # 兜底策略1:如果检测到弹窗但未找到关闭按钮,且页面元素很少(只有1个可点击元素),直接点击它
3332
3332
  if popup_detected and popup_bounds and len(all_clickable_elements) == 1:
3333
3333
  single_element = all_clickable_elements[0]
3334
3334
  self.client.u2.click(single_element['center_x'], single_element['center_y'])
@@ -3354,6 +3354,37 @@ class BasicMobileToolsLite:
3354
3354
  result["returned"] = return_result['success']
3355
3355
  return result
3356
3356
 
3357
+ # 兜底策略2:即使未检测到弹窗,如果页面只有一个可点击元素,也尝试点击它(可能是特殊类型的弹窗)
3358
+ # 这种情况通常出现在:下载浮层、特殊弹窗等,它们的 resource-id 可能不包含 dialog/popup 等关键词
3359
+ if len(all_clickable_elements) == 1:
3360
+ single_element = all_clickable_elements[0]
3361
+ # 检查元素是否占据较大屏幕区域(可能是弹窗)
3362
+ element_area_ratio = (single_element['width'] * single_element['height']) / (screen_width * screen_height)
3363
+ # 如果元素占据屏幕 20% 以上,认为是可能的弹窗
3364
+ if element_area_ratio > 0.2:
3365
+ self.client.u2.click(single_element['center_x'], single_element['center_y'])
3366
+ time.sleep(0.5)
3367
+
3368
+ # 检查应用是否跳转
3369
+ app_check = self._check_app_switched()
3370
+ return_result = None
3371
+ if app_check['switched']:
3372
+ return_result = self._return_to_target_app()
3373
+
3374
+ # 记录操作
3375
+ rel_x = single_element['center_x'] / screen_width
3376
+ rel_y = single_element['center_y'] / screen_height
3377
+ self._record_click('percent', f"{round(rel_x * 100, 1)}%,{round(rel_y * 100, 1)}%",
3378
+ round(rel_x * 100, 1), round(rel_y * 100, 1),
3379
+ element_desc="唯一可点击元素(特殊弹窗兜底)")
3380
+
3381
+ result = {"success": True, "clicked": True, "method": "single_clickable_special_popup_fallback"}
3382
+ if app_check['switched']:
3383
+ result["switched"] = True
3384
+ if return_result:
3385
+ result["returned"] = return_result['success']
3386
+ return result
3387
+
3357
3388
  # 如果没有找到关闭按钮,且不满足兜底条件,返回fallback
3358
3389
  if popup_detected and popup_bounds:
3359
3390
  return {"success": False, "fallback": "vision", "popup": True}
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mobile-mcp-ai
3
- Version: 2.7.4
3
+ Version: 2.7.5
4
4
  Summary: 移动端自动化 MCP Server - 支持 Android/iOS,AI 功能可选(基础工具不需要 AI)
5
5
  Home-page: https://github.com/test111ddff-hash/mobile-mcp-ai
6
6
  Author: douzi
@@ -1,7 +1,7 @@
1
1
  mobile_mcp/__init__.py,sha256=sQJZTL_sxQFzmcS7jOtS2AHCfUySz40vhX96N6u1qy4,816
2
2
  mobile_mcp/config.py,sha256=-xSl9vahp3EFAA97P1ahcnQC-HHAFvccGHpnFAXeKHU,5841
3
3
  mobile_mcp/core/__init__.py,sha256=ndMy-cLAIsQDG5op7gM_AIplycqZSZPWEkec1pEhvEY,170
4
- mobile_mcp/core/basic_tools_lite.py,sha256=tclg7m7STWaWwSizAhK-MeZhsvboKqjKo_t5ZKEt0n4,221624
4
+ mobile_mcp/core/basic_tools_lite.py,sha256=XRt_T4sWtUpZZFs4fnZsxEMk8x1F3bdoK-8FK-frf08,223778
5
5
  mobile_mcp/core/device_manager.py,sha256=xG5DoeNFs45pl-FTEhEWblqVwxtFK-FmVEGlNL6EqRI,8798
6
6
  mobile_mcp/core/dynamic_config.py,sha256=Ja1n1pfb0HspGByqk2_A472mYVniKmGtNEWyjUjmgK8,9811
7
7
  mobile_mcp/core/ios_client_wda.py,sha256=Nq9WxevhTWpVpolM-Ymp-b0nUQV3tXLFszmJHbDC4wA,18770
@@ -24,9 +24,9 @@ mobile_mcp/utils/__init__.py,sha256=8EH0i7UGtx1y_j_GEgdN-cZdWn2sRtZSEOLlNF9HRnY,
24
24
  mobile_mcp/utils/logger.py,sha256=Sqq2Nr0Y4p03erqcrbYKVPCGiFaNGHMcE_JwCkeOfU4,3626
25
25
  mobile_mcp/utils/xml_formatter.py,sha256=uwTRb3vLbqhT8O-udzWT7s7LsV-DyDUz2DkofD3hXOE,4556
26
26
  mobile_mcp/utils/xml_parser.py,sha256=QhL8CWbdmNDzmBLjtx6mEnjHgMFZzJeHpCL15qfXSpI,3926
27
- mobile_mcp_ai-2.7.4.dist-info/licenses/LICENSE,sha256=HrhfyXIkWY2tGFK11kg7vPCqhgh5DcxleloqdhrpyMY,11558
28
- mobile_mcp_ai-2.7.4.dist-info/METADATA,sha256=L46BIHR90WVEk5KCH4WvCmP6kM2H3XnLETW3w2wFg8Y,11505
29
- mobile_mcp_ai-2.7.4.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
30
- mobile_mcp_ai-2.7.4.dist-info/entry_points.txt,sha256=KB_FglozgPHBprSM1vFbIzGyheFuHFmGanscRdMJ_8A,68
31
- mobile_mcp_ai-2.7.4.dist-info/top_level.txt,sha256=lLm6YpbTv855Lbh8BIA0rPxhybIrvYUzMEk9OErHT94,11
32
- mobile_mcp_ai-2.7.4.dist-info/RECORD,,
27
+ mobile_mcp_ai-2.7.5.dist-info/licenses/LICENSE,sha256=HrhfyXIkWY2tGFK11kg7vPCqhgh5DcxleloqdhrpyMY,11558
28
+ mobile_mcp_ai-2.7.5.dist-info/METADATA,sha256=N1FCdAUoa4yJ9Rkbawl7n_kNn7sYPYYkR3GzoTBssEg,11505
29
+ mobile_mcp_ai-2.7.5.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
30
+ mobile_mcp_ai-2.7.5.dist-info/entry_points.txt,sha256=KB_FglozgPHBprSM1vFbIzGyheFuHFmGanscRdMJ_8A,68
31
+ mobile_mcp_ai-2.7.5.dist-info/top_level.txt,sha256=lLm6YpbTv855Lbh8BIA0rPxhybIrvYUzMEk9OErHT94,11
32
+ mobile_mcp_ai-2.7.5.dist-info/RECORD,,