diff --git a/API执行演示.gif b/API执行演示.gif
new file mode 100644
index 00000000..163a42f1
Binary files /dev/null and b/API执行演示.gif differ
diff --git a/MangoActuator/autotest/ui/base_tools/__init__.py b/MangoActuator/autotest/ui/base_tools/__init__.py
index 06860148..67dc990c 100644
--- a/MangoActuator/autotest/ui/base_tools/__init__.py
+++ b/MangoActuator/autotest/ui/base_tools/__init__.py
@@ -4,8 +4,8 @@
# @Time : 2023-07-15 11:57
# @Author : 毛鹏
-from autotest.ui.base_tools.web import WebDevice
from autotest.ui.base_tools.android import AndroidDriver
+from autotest.ui.base_tools.web import WebDevice
from enums.tools_enum import StatusEnum
from enums.ui_enum import ElementOperationEnum, DriveTypeEnum
from exceptions.tools_exception import SyntaxErrorError, MysqlQueryIsNullError
@@ -13,6 +13,7 @@ from exceptions.ui_exception import *
from models.socket_model.ui_model import ElementResultModel, ElementModel
from tools.decorator.async_retry import async_retry
from tools.desktop.signal_send import SignalSend
+from tools.log_collector import log
from tools.message.error_msg import *
@@ -76,6 +77,7 @@ class ElementMain(WebDevice, AndroidDriver):
elif self.drive_type == DriveTypeEnum.DESKTOP.value:
pass
else:
+ log.error('不存在的设备类型')
raise Exception('不存在的设备类型')
async def assertion_element(self):
@@ -88,6 +90,7 @@ class ElementMain(WebDevice, AndroidDriver):
elif self.drive_type == DriveTypeEnum.DESKTOP.value:
pass
else:
+ log.error('不存在的设备类型')
raise Exception('不存在的设备类型')
async def __ope(self, name, ope_type):
diff --git a/MangoActuator/autotest/ui/base_tools/android/__init__.py b/MangoActuator/autotest/ui/base_tools/android/__init__.py
index e3160f24..1027afdd 100644
--- a/MangoActuator/autotest/ui/base_tools/android/__init__.py
+++ b/MangoActuator/autotest/ui/base_tools/android/__init__.py
@@ -18,6 +18,7 @@ from exceptions.ui_exception import *
from models.socket_model.ui_model import ElementModel, ElementResultModel
from tools.assertion.sql_assertion import SqlAssertion
from tools.message.error_msg import *
+from tools.public_methods import sync_global_exception
class AndroidDriver(UiautomatorEquipment,
@@ -60,7 +61,7 @@ class AndroidDriver(UiautomatorEquipment,
except UiObjectNotFoundError as error:
raise ElementLocatorError(*ERROR_MSG_0032, value=(self.element_model.name,), error=error, )
except Exception as error:
- print(error)
+ sync_global_exception(error, False)
else:
if 'locating' in self.element_model.ope_value:
del self.element_model.ope_value['locating']
diff --git a/MangoActuator/autotest/ui/base_tools/android/application.py b/MangoActuator/autotest/ui/base_tools/android/application.py
index e39e995b..8956ae74 100644
--- a/MangoActuator/autotest/ui/base_tools/android/application.py
+++ b/MangoActuator/autotest/ui/base_tools/android/application.py
@@ -4,7 +4,6 @@
# @Time : 2023-09-09 23:17
# @Author : 毛鹏
import time
-
import uiautomator2
from autotest.ui.base_tools.base_data import BaseData
diff --git a/MangoActuator/autotest/ui/base_tools/android/equipment.py b/MangoActuator/autotest/ui/base_tools/android/equipment.py
index 4c3038f7..789c6267 100644
--- a/MangoActuator/autotest/ui/base_tools/android/equipment.py
+++ b/MangoActuator/autotest/ui/base_tools/android/equipment.py
@@ -29,6 +29,7 @@ class UiautomatorEquipment(BaseData):
def a_swipe_left(self):
"""获取屏幕开关状态"""
self.android.info.get('screenOn')
+
#
# def a_home(self):
# """返回首页"""
diff --git a/MangoActuator/autotest/ui/base_tools/driver_object.py b/MangoActuator/autotest/ui/base_tools/driver_object.py
index 80423a57..53506ef6 100644
--- a/MangoActuator/autotest/ui/base_tools/driver_object.py
+++ b/MangoActuator/autotest/ui/base_tools/driver_object.py
@@ -29,7 +29,7 @@ from tools.data_processor.sql_cache import SqlCache
from tools.desktop.signal_send import SignalSend
from tools.log_collector import log
from tools.message.error_msg import ERROR_MSG_0008, ERROR_MSG_0009, ERROR_MSG_0042, ERROR_MSG_0045, ERROR_MSG_0047
-
+from tools.public_methods import async_global_exception
"""
python -m uiautomator2 init
python -m weditor
@@ -180,7 +180,7 @@ class DriverObject:
await ClientWebSocket.async_send(msg="发送录制接口", func_name=ApiSocketEnum.RECORDING_API.value,
func_args=api_info)
except Exception as error:
- log.error(error)
+ await async_global_exception(error)
async def test_main():
diff --git a/MangoActuator/autotest/ui/service/case_run.py b/MangoActuator/autotest/ui/service/case_run.py
index c25af02c..ba29be53 100644
--- a/MangoActuator/autotest/ui/service/case_run.py
+++ b/MangoActuator/autotest/ui/service/case_run.py
@@ -8,11 +8,10 @@ import asyncio
from autotest.ui.base_tools.driver_object import DriverObject
from autotest.ui.service.cases import CasesMain
-from enums.tools_enum import ClientTypeEnum
from enums.ui_enum import DriveTypeEnum
from models.socket_model.ui_model import CaseModel
-from service.socket_client import ClientWebSocket
from tools.log_collector import log
+from tools.public_methods import async_global_exception
class CaseRun(DriverObject):
@@ -55,9 +54,7 @@ class CaseRun(DriverObject):
log.error('自动化类型不存在,请联系管理员检查!')
await obj.case_page_step()
except Exception as error:
- log.error(str(error))
- await ClientWebSocket.async_send(code=300,
- msg="执行元素步骤时发生未知异常,请检查数据或者联系管理员",
- is_notice=ClientTypeEnum.WEB.value)
+ await async_global_exception(error)
+
finally:
self.running_tasks -= 1
diff --git a/MangoActuator/autotest/ui/service/cases.py b/MangoActuator/autotest/ui/service/cases.py
index e47ff379..0dcd0659 100644
--- a/MangoActuator/autotest/ui/service/cases.py
+++ b/MangoActuator/autotest/ui/service/cases.py
@@ -15,7 +15,7 @@ from models.socket_model.ui_model import CaseModel, CaseResultModel, PageStepsMo
from service.socket_client import ClientWebSocket
from tools.desktop.signal_send import SignalSend
from tools.log_collector import log
-
+from tools.public_methods import async_global_exception
class CasesMain(StepsMain):
@@ -54,7 +54,7 @@ class CasesMain(StepsMain):
except MangoActuatorError as error:
self.case_result.error_message = f'用例<{self.case_model.name}> 失败原因:{error.msg}'
self.case_result.status = StatusEnum.FAIL.value
- log.error(error.msg)
+ log.warning(error.msg)
break
else:
if page_steps_result_model.status:
@@ -62,17 +62,14 @@ class CasesMain(StepsMain):
else:
self.case_result.error_message = f'用例<{self.case_model.name}> 失败原因:{page_steps_result_model.error_message}'
self.case_result.status = StatusEnum.FAIL.value
- log.error(page_steps_result_model.error_message)
+ log.warning(page_steps_result_model.error_message)
break
await self.case_posterior(self.case_model.posterior_sql)
except MangoActuatorError as error:
self.case_result.error_message = f'用例<{self.case_model.name}> 失败原因:{error.msg}'
self.case_result.status = StatusEnum.FAIL.value
except Exception as error:
- log.error(str(error))
- await ClientWebSocket.async_send(code=300,
- msg="执行元素步骤时发生未知异常,请检查数据或者联系管理员",
- is_notice=ClientTypeEnum.WEB.value)
+ await async_global_exception(error)
else:
msg = self.case_result.error_message if self.case_result.error_message else f'用例<{self.case_model.name}>测试完成'
await ClientWebSocket.async_send(
diff --git a/MangoActuator/autotest/ui/service/steps.py b/MangoActuator/autotest/ui/service/steps.py
index ff5700af..8b0514d9 100644
--- a/MangoActuator/autotest/ui/service/steps.py
+++ b/MangoActuator/autotest/ui/service/steps.py
@@ -73,7 +73,7 @@ class StepsMain(ElementMain):
return self.page_step_result_model
async def __error(self, error: MangoActuatorError):
- log.error(
+ log.warning(
f'元素操作失败,element_model:{self.element_model.dict()},element_test_result:{self.element_test_result.dict()},error:{error.msg}')
path = rf'{InitPath.failure_screenshot_file}\{self.element_model.name}{RandomTimeData.get_deta_hms()}.jpg'
SignalSend.notice_signal_c(f'''元素名称:{self.element_test_result.ele_name}
diff --git a/MangoActuator/dd.md b/MangoActuator/dd.md
new file mode 100644
index 00000000..36485933
--- /dev/null
+++ b/MangoActuator/dd.md
@@ -0,0 +1,95 @@
+# ✨️ 概述
+
+DrissionPage 是一个基于 python 的网页自动化工具。
+
+它既能控制浏览器,也能收发数据包,还能把两者合而为一。
+
+可兼顾浏览器自动化的便利性和 requests 的高效率。
+
+它功能强大,内置无数人性化设计和便捷功能。
+
+它的语法简洁而优雅,代码量少,对新手友好。
+
+---
+
+官方网站:[https://drissionpage.cn](https://drissionpage.cn)
+
+
+
+项目地址:[gitee](https://gitee.com/g1879/DrissionPage) | [github](https://github.com/g1879/DrissionPage)
+
+您的星星是对我最大的支持💖
+
+---
+
+支持系统:Windows、Linux、Mac
+
+python 版本:3.6 及以上
+
+支持浏览器:Chromium 内核浏览器(如 Chrome 和 Edge),electron 应用
+
+---
+
+# 🛠 如何使用
+
+**📖 使用文档:** [点击查看](https://g1879.gitee.io/drissionpagedocs)
+
+**交流 QQ 群:** 636361957
+
+---
+
+# 💡 理念
+
+简洁而强大!
+
+---
+
+# ☀️ 特性和亮点
+
+作者经过长期实践,踩过无数坑,总结出的经验全写到这个库里了。
+
+## 🎇 强大的自研内核
+
+本库采用全自研的内核,内置无数实用功能,对常用功能作了整合和优化,对比 selenium,有以下优点:
+
+- 不基于 webdriver
+- 无需为不同版本的浏览器下载不同的驱动
+- 运行速度更快
+- 可以跨`