首页 > 技术文章 > Appium报错:Could not proxy command to remote server. Original error: Error: socket hang up

zdf-blog 2021-03-25 14:29 原文

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

推荐阅读