appium自动化测试过程中,在执行到一条用例一半的时候,总是报如下错误,socket 自动挂起:
WebDriverException: Message: An unknown server-side error occurred while processing the command. Original error: Could not proxy command to remote server. Original error: Error: socket hang up
出现这个情况,应该是上个进程未关闭导致的,一般Node.js提供的HttpServer默认设置了2分钟超时时间,当一个请求的处理时间超过2分钟,HttpServer会自动调用请求的套接字关闭掉,于是客户端变收到了econnreset的错误信息了。这不是因为时间的问题导致超时错误,主要原因是HttpServer进程被上一次自动化测试占用,所以就会导致以运行就会报econnreset的错误
解决方案:
1、删掉手机上安装的appium的两个app(Appium Setting和io.appium.uiautomator2.server.test),重启手机
2、在脚本层面上,session覆盖选项设置为True。自动化任务跑完最后面一定要调用driver.quit 等操作,或者代码出现致命错误,的时候也要去执行quit。以防下次自动化任务跑失败
我是因为在调试代码的过程中,将cls.driver.quit()用pass占位符代替了,导致的运行失败。修改后运行正常。
1 class MonitorOperation(unittest.TestCase): 2 @classmethod 3 def setUpClass(cls) -> None: 4 # 启动app 5 cls.driver = StartApp().start_wtx_oppo() 6 # 设置隐式等待6秒 7 cls.driver.implicitly_wait(6) 8 # 实例化页面元素 9 cls.monitor_lct = MonitorLocation() 10 cls.home_page_lct = HomePageLocation() 11 cls.current_stat_lct = CurrentStatLocation() 12 cls.ask_doctor_lct = AskDoctorLocation() 13 # 登录APP 14 LoginApp(cls.driver).login() 15 16 @classmethod 17 def tearDownClass(cls) -> None: 18 # 退出程序 19 cls.driver.quit()