如果我运行 TestNG 测试类,它会显示错误------------
org.openqa.selenium.WebDriverException: 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 (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 281 milliseconds
Build info: version: '2.53.1', revision: 'a36b8b1cd5757287168e54b817830adce9b0158d', time: '2016-06-30 19:26:09'
System info: host: 'MON-PC305', ip: '10.101.0.119', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_144'
Driver info: io.appium.java_client.android.AndroidDriver
Capabilities [{appPackage=com.app.android.game.app, statBarHeight=84, noReset=false, viewportRect={top=84, left=0, width=1440, height=2308}, deviceName=emulator-5554, platform=LINUX, deviceUDID=emulator-5554, desired={app="app path", appPackage=com.app.android.game.app, appActivity=com.app.android.game.app.activities.login.riskWarningLogin.RiskWarningLoginActivity, noReset=false, automationName=uiautomator2, skipUnlock=true, platformName=Android, deviceName=emulator-5554}, platformVersion=9, webStorageEnabled=false, automationName=uiautomator2, takesScreenshot=true, skipUnlock=true, javascriptEnabled=true, platformName=Android, deviceApiLevel=28, deviceManufacturer=Google, app=C:\Users\***\eclipse-workspace\appname\app.apk, deviceScreenSize=1440x2560, networkConnectionEnabled=true, warnings={}, databaseEnabled=false, appActivity=com.app.android.game.app.activities.login.riskWarningLogin.RiskWarningLoginActivity, pixelRatio=3.5, locationContextEnabled=false, deviceScreenDensity=560, deviceModel=Android SDK built for x86}]
Session ID: d275d496-08b0-4652-9aa9-67ae0476cdc8
停止 appium 服务器并执行以下命令
adb 卸载 io.appium.uiautomator2.server adb 卸载 io.appium.uiautomator2.server.test
启动appium服务器并执行你的脚本..它会工作
我遇到了一个确切的错误,但解决方案是我必须重新启动我的 Android 模拟器和 Appium 服务器。之后一切开始工作。
停止 appium 服务器并执行以下命令
adb uninstall io.appium.uiautomator2.server adb uninstall io.appium.uiautomator2.server.test
发生这种情况是因为您在代码中打开了 2 个驱动程序实例。
URL url = new URL(Common.getProperty("URL"));
driver = new AndroidDriver<WebElement>(url, capabilities);
以上内容。确保你只在你的西装中初始化过一次,否则它会遇到你遇到的同样的错误。
我遇到了完全相同的问题。 以下是快速解决方案无需卸载任何东西:
如果您使用的是真实设备(Android)。拔下 USB 数据线,然后 关闭或重新启动您的 Android 设备。
如果您使用的是模拟器 (Android)。关闭它并重新启动 相应地。
连接你的真实设备/模拟器并运行你的测试一切都应该相应地工作
不知道是不是一样,我在vivo手机上通过uiautomator2运行appium automation时遇到了类似的问题。 appium 错误日志就像
[debug] [W3C (9ae907c5)] Encountered internal error running command: UnknownError: 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
[debug] [W3C (9ae907c5)] at JWProxy.command (/usr/local/lib/node_modules/appium/node_modules/appium-base-driver/lib/jsonwp-proxy/proxy.js:261:13)
[HTTP] <-- POST /wd/hub/session/9ae907c5-5319-4f0b-92dc-fdaa47cfdcc5/element 500 139 ms - 530
我这边的原因是 io.appium.uiautomator2.server 被系统进程 com.vivo.abe 杀死,因为我从 logcat 中捕获了以下日志
02-29 09:43:32.236 1742 15589 I ActivityManager: Force stopping io.appium.uiautomator2.server appid=10271 user=0: stop by com.vivo.abe
02-29 09:43:32.236 701 701 E ANDR-IOP: IOP HAL: Received pkg_name = io.appium.uiautomator2.server pid = 0
02-29 09:43:32.237 1742 15589 I ActivityManager: Killing 28683:io.appium.uiautomator2.server/u0a271 (adj 0): stop by com.vivo.abe
02-29 09:43:32.239 701 701 E ANDR-IOP: IOP HAL: Received pkg_name = io.appium.uiautomator2.server pid = 0
com.vivo.abe(名字叫vivo智慧引擎)是vivo手机的系统应用,不能卸载也不能强制停止。解决这个问题的方法有一个,就是把io.appium.uiautomator2.server加入白名单,com.vivo.abe就不会再对app执行kill了。
方法是 Setting -> Battery -> High background power consumption ,然后将 io.appium.uiautomator2.server 添加到允许列表中。
我执行动作后,io.appium.uiautomator2.server不会再被杀死,自动化脚本可以顺利运行。
希望能给解决问题的一些参考
以下对我有用,我在 android studio 中使用虚拟设备
大功告成!设备将在几分钟内重新启动。
我也遇到了类似的问题。当你遇到这样的问题时,你只需要在你的终端上运行以下命令:
adb uninstall io.appium.uiautomator2.server.test
你会得到一个终端成功响应。重新运行您的 Appium 服务器,它将正常工作。
同时我找到了一个解决方法:(我在 webdriver.io 中使用 javascript,但是你可以调整到其他客户端语言,基本上是一样的)
1.- 在 Android 功能中添加完全重置
'appium:fullReset': true,
2.-在
afterEach
方法中删除会话await driver.deleteSession();
afterEach(async function () {
await driver.deleteSession();
},2);
3.- 初始化驱动程序时添加 2 次重试,在我的例子中是
beforeEach
方法
beforeEach(async function () {
driver = await getAppiumClient();
}, 2);
然后它会在第一次或第二次失败时出现 socket hang up 错误,但我将成功运行第三次和后续测试。