一般 Node.js 提供的 HttpServer 默认设置了超时时间为 2 分钟,当一个请求的处理时间超过 2 分钟,HttpServer 会自动将该请求的 socket 关闭掉,于是客户端便收到了 ECONNRESET 的错误信息了;当然这里不是因为时间的问题 是直接报超时 error ,主要的原因就是 HttpServer 进程被上次自动化一直占用,所以会导致一运行就会报 ECONNRESET 的错误,一般重启设备或删除 Appium 的所属 App 即可
这个问题,我也遇到过,我当时把 设备上关于 Appium 安装的所有软件手动卸载 再运行时就没问题了 好像是设备上的 Proxy 代理被上次自动化运行占用未被释放导致的
Appium 应用自身闪退
出现以上情况的主要原因时 adb 冲突的问题 ,同一 PC 启动多台 Appium 进行多设备并发时,如果是无线连接,需要启动不同的 adb server,否则会引起冲突,目前解决的方法是 adb -P yourport connect yourip:deviceport,adb 连接时加上端口号(5037 默认,可以在此基础上依次增加),deviceport 是通过先有线连接单个设备,进行 adb tcpip deviceport 增加的
我做一台 PC 测试同一个 APP 在多台 Android 设备并发操作时,
Appium 版本为:appium-desktop-setup-1.6.3.exe
Robtot Framework 为:robotframework-ride-1.5.2.1
利用 Jenkins 多任务调度同时启动 N 台 Android 设备并发运行相同的设备进行测试成功!
同一 PC 启动 N 个桌面 Appium 程序,配置相应的端口如下:
Server Port 4723、4725、4727、4729...
Bootstrap Port:4724、4726、4728、4730...
Chromedriver Port 设置对应自行脚本的 systemPort=${sysPort}【不知道有用不,已设置为 RF 中的 systemPort 端口相同】
每个 RF 的启动 APP 参数如下:
${sysPort}= Convert To Integer ${sysPort}
#http://127.0.0.1:4723/wd/hub 7.0 192.168.60.19:8888 8201 appium [启动 App 的参数]
Open Application ${httpadr} platformName=Android platformVersion={pVersion} deviceName=${device} udid=${device} systemPort=${sysPort} automationName=${automatName} appPackage=com.yourapp.android appActivity=com.yourapp.mainactivity.MainActivity unicodeKeyboard=True resetKeyboard=True noReset=True
不过我现在都没有搞明白什么时候 automationName=appium,什么时候 automationName=uiautomator2,但是我知道 appium 参数不行的话,设置成 uiautomator2 一般都可以了
我经过测试调试,发现 Appium1.6.3 对并发的操作兼容性比较好,上述问题已经解决。
我是 robot framework +python,使用如下方法可以模拟坐标点击:
Click A Point x y 10
你确定你的 adb 是连接正常,用命令 “adb devices” 看一下你的设备:
C:\Users\gjliu>adb devices
List of devices attached
03ae7266093c80ba device
from appium import webdriver
说明你的 Appium-Python-Client 没有配好,请安装 Readme 文档配置就可以了。