refactor: 优化 Appium 服务管理逻辑与进程清理
- 弃用 npm run 改为直接调用 appium.cmd,消除 Windows 进程残留。 - 统一 _cleanup_process_tree 逻辑,确保异常退出时无孤儿进程。 - 重构 start_appium_service 为单一循环状态机,增强启动探测的健壮性。 - 新增 with_appium 装饰器,确保无论测试结果如何均能干净退出
This commit is contained in:
48
main.py
48
main.py
@@ -3,41 +3,41 @@ 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
|
||||||
|
|
||||||
# 在自动化套件启动前执行
|
|
||||||
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)
|
|
||||||
|
|
||||||
|
|
||||||
def main():
|
@with_appium
|
||||||
|
def main(service):
|
||||||
|
print(f"正在测试,服务模式: {service.role}")
|
||||||
# 简单操作示例
|
# 简单操作示例
|
||||||
|
driver = None
|
||||||
try:
|
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)
|
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