refactor: 优化 Appium 服务管理逻辑与进程清理
- 弃用 npm run 改为直接调用 appium.cmd,消除 Windows 进程残留。 - 统一 _cleanup_process_tree 逻辑,确保异常退出时无孤儿进程。 - 重构 start_appium_service 为单一循环状态机,增强启动探测的健壮性。 - 新增 with_appium 装饰器,确保无论测试结果如何均能干净退出
This commit is contained in:
20
main.py
20
main.py
@@ -3,10 +3,17 @@ import time
|
|||||||
from appium import webdriver
|
from appium import webdriver
|
||||||
from appium.options.android import UiAutomator2Options
|
from appium.options.android import UiAutomator2Options
|
||||||
|
|
||||||
from run_appium import start_appium_service, stop_appium_service
|
from run_appium import start_appium_service, stop_appium_service, with_appium
|
||||||
|
|
||||||
|
|
||||||
|
@with_appium
|
||||||
|
def main(service):
|
||||||
|
print(f"正在测试,服务模式: {service.role}")
|
||||||
|
# 简单操作示例
|
||||||
|
driver = None
|
||||||
|
try:
|
||||||
# 在自动化套件启动前执行
|
# 在自动化套件启动前执行
|
||||||
proc = start_appium_service()
|
# proc = start_appium_service()
|
||||||
|
|
||||||
# 配置Android设备参数
|
# 配置Android设备参数
|
||||||
capabilities = dict(
|
capabilities = dict(
|
||||||
@@ -23,21 +30,14 @@ options = UiAutomator2Options().load_capabilities(capabilities)
|
|||||||
# 连接Appium服务器
|
# 连接Appium服务器
|
||||||
# driver = webdriver.Remote('http://localhost:4723', options=options)
|
# driver = webdriver.Remote('http://localhost:4723', options=options)
|
||||||
driver = webdriver.Remote('http://127.0.0.1:4723', options=options)
|
driver = webdriver.Remote('http://127.0.0.1:4723', options=options)
|
||||||
|
|
||||||
|
|
||||||
def main():
|
|
||||||
# 简单操作示例
|
|
||||||
try:
|
|
||||||
time.sleep(1)
|
time.sleep(1)
|
||||||
print("当前Activity:", driver.current_activity)
|
print("当前Activity:", driver.current_activity)
|
||||||
finally:
|
finally:
|
||||||
driver.quit()
|
driver.quit()
|
||||||
# 在自动化套件结束后执行
|
# 在自动化套件结束后执行
|
||||||
stop_appium_service(proc)
|
# stop_appium_service(proc)
|
||||||
print("Hello from AppAutoTest!")
|
print("Hello from AppAutoTest!")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
main()
|
main()
|
||||||
|
|||||||
Reference in New Issue
Block a user