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.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()
|
||||
|
||||
Reference in New Issue
Block a user