Original error: Error: socket hang up
一、appium 執行 app 自動化時,上一個自動化程序未關閉導致
一般 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。以防下次自動化任務跑失敗
3、也可以在啟動 appium 命令新增:-session-override,或者在 appium desktop 中,點選 Advanced,勾選 Allow Session Override。
二、appium 多併發執行,未指定 systemPort,當觸發多個終端執行時,系統埠占用衝突
解決方案:
系統會分配埠號用於與裝置互動,通常 ios 為 8100~8199,android 為 8200~8299.為避免衝突,可以為每個執行緒指定埠號,設定系統與裝置埠號:systemPort
{
"platformName": "Android",
"appium:platformVersion": "11",
"appium:deviceName": "emulator test2",
"appium:automationName": "UiAutomator2",
"appium:newCommandTimeout": "180",
"appium:resetKeyboard": true,
"appium:unicodeKeyboard": true,
"appium:noReset": true,
"appium:unlockType": "pattern",
"appium:unlockKey": "",
"appium:clearSystemFiles": true,
"appium:skipServerInstallation": false,
"appium:skipDeviceInitialization": false,
"appium:appPackage": "com.xx.xx",
"appium:appActivity": "com.xx.xx.xx",
"appium:udid": "emulator-5556",
"appium:systemPort ": "8201"
}
如果以上方式還會偶現,避開同一時間點觸發多個裝置自動化,也可終端輸入命令:adb logcat ,搜尋其中的 uiautomator 分類的 log
三、元素定位超時
元素定位過程超時,可以新增 desired_caps 超時時間:
"appium:newCommandTimeout": "180",
...
相關文章
- 關於報錯An unexpected error occurred: “https://registry.yarnpkg.com/react: socket hang up“ErrorHTTPYarnReact
- appium start session 時報錯 Error executing adbExec. Original error 求指點APPSessionError
- appium start session 時報錯 Error executing adbExec. Original error。已經卡了一天,求大神指點APPSessionError
- ERROR 2026 (HY000): SSL connection error: unknown error numberError
- mount error(5): Input/output errorError
- 【ERROR】OPatch failed with error code 73ErrorAI
- Django Error: [WinError 10013] An attempt was made to access a socket in a way forbidden by its access permissionsDjangoErrorORB
- java.sql.SQLRecoverableException: IO Error: Socket read timed out 排查歷程JavaSQLExceptionError
- error:03000086:digital envelope routines::initialization errorErrorGit
- 如何解決"Parse error: syntax error"Error
- ERROR 1045 (28000): ProxySQL Error: 報錯ErrorSQL
- Error page: / Error infos: DedeCms錯誤警告Error
- Last_IO_Error: Got fatal error 1236ASTErrorGo
- vagrant up 啟動報錯 Stderr: VBoxManage.exe: error: A NAT rule of this name already existsError
- Error for iOSErroriOS
- Setup had an error Error: At least one of these paths should existErrorAST
- 求教:Appium DesiredCapabilities 設定語言和 地區,執行程式報錯:Original error: Failed to set language: fr and country: undefinedAPP行程ErrorAIUndefined
- Golang 學習——error 和建立 error 原始碼解析GolangError原始碼
- Angular 錯誤訊息:ERROR Error NullInjectorError No provider for XXAngularErrorNullIDE
- [Bash] Error handlingError
- Error reporting for dbusError
- FileReader error 事件Error事件
- System Error CodesError
- ORACLE STREAM ERROROracleError
- Exception和ErrorExceptionError
- git add errorGitError
- ERROR | [iOS] unknown: Encountered an unknown error (Could not find a `ios` simulator (valid values:ErroriOS
- Error: error:0308010C:digital envelope routines::unsupported 解決方案ErrorGit
- 帝國CMS提示parse error syntax error的解決方法Error
- HBuilder解決:Error: error:0308010C:digital envelope routines::unsupportedUIErrorGit
- Error: Debug Failure at typeToStringErrorAI
- yum error - package is a duplicate withErrorPackage
- NGINX error_pageNginxError
- 跨域 Cors error跨域CORSError
- mysqldump Got error: 1045MySqlGoError
- curl error 6 for laradockError
- FileReader error 屬性Error
- mysqldump Got error 1290MySqlGoError