From eabce169726629d25a7789184213bdc237188ee2 Mon Sep 17 00:00:00 2001 From: CNWei Date: Wed, 14 Jan 2026 19:24:34 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E4=BC=98=E5=8C=96=20Appium=20?= =?UTF-8?q?=E6=9C=8D=E5=8A=A1=E7=AE=A1=E7=90=86=E9=80=BB=E8=BE=91=E4=B8=8E?= =?UTF-8?q?=E8=BF=9B=E7=A8=8B=E6=B8=85=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 弃用 npm run 改为直接调用 appium.cmd,消除 Windows 进程残留。 - 统一 _cleanup_process_tree 逻辑,确保异常退出时无孤儿进程。 - 重构 start_appium_service 为单一循环状态机,增强启动探测的健壮性。 - 新增 with_appium 装饰器,确保无论测试结果如何均能干净退出 --- main.py | 48 ++++++++++++++++++++++++------------------------ 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/main.py b/main.py index d0ec879..137ce9f 100644 --- a/main.py +++ b/main.py @@ -3,41 +3,41 @@ import time from appium import webdriver from appium.options.android import UiAutomator2Options -from run_appium import start_appium_service, stop_appium_service - -# 在自动化套件启动前执行 -proc = start_appium_service() - -# 配置Android设备参数 -capabilities = dict( - platformName='Android', - automationName='uiautomator2', - deviceName='Android', - appPackage='com.android.settings', - appActivity='.Settings' -) - -# 转换capabilities为Appium Options -options = UiAutomator2Options().load_capabilities(capabilities) - -# 连接Appium服务器 -# driver = webdriver.Remote('http://localhost:4723', options=options) -driver = webdriver.Remote('http://127.0.0.1:4723', options=options) +from run_appium import start_appium_service, stop_appium_service, with_appium -def main(): +@with_appium +def main(service): + print(f"正在测试,服务模式: {service.role}") # 简单操作示例 + driver = None try: + # 在自动化套件启动前执行 + # proc = start_appium_service() + + # 配置Android设备参数 + capabilities = dict( + platformName='Android', + automationName='uiautomator2', + deviceName='Android', + appPackage='com.android.settings', + appActivity='.Settings' + ) + + # 转换capabilities为Appium Options + options = UiAutomator2Options().load_capabilities(capabilities) + + # 连接Appium服务器 + # driver = webdriver.Remote('http://localhost:4723', options=options) + driver = webdriver.Remote('http://127.0.0.1:4723', options=options) time.sleep(1) print("当前Activity:", driver.current_activity) finally: driver.quit() # 在自动化套件结束后执行 - stop_appium_service(proc) + # stop_appium_service(proc) print("Hello from AppAutoTest!") - - if __name__ == "__main__": main()