refactor: 优化 Appium 服务管理逻辑与进程清理

- 弃用 npm run 改为直接调用 appium.cmd,消除 Windows 进程残留。
- 统一 _cleanup_process_tree 逻辑,确保异常退出时无孤儿进程。
- 重构 start_appium_service 为单一循环状态机,增强启动探测的健壮性。
- 新增 with_appium 装饰器,确保无论测试结果如何均能干净退出
This commit is contained in:
2026-01-14 19:24:34 +08:00
parent c4c1692f09
commit eabce16972

48
main.py
View File

@@ -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()