2017-02-16 170 views
4

我有問題,在Android上運行測試7.0實設備(的Nexus 6) Appium版本:1.6.3 操作系統:Windows 10 語言:Java的 Java客戶端:4.1.2無法運行在Android appium測試7.0

有趣的是,當我插入任何Android 6設備(將platformVersion設置爲6.0)時 - 測試運行沒有問題。但是當我嘗試在Android 7.0設備上運行它們時,出現錯誤。

這裏是我的能力,在Android 7.0上運行:

DesiredCapabilities capabilities = new DesiredCapabilities(); 
capabilities.setCapability("deviceName", "Android"); 
capabilities.setCapability("browserName", "Android"); 
capabilities.setCapability("platformName", "Android"); 
capabilities.setCapability("platformVersion", "7.0"); 
capabilities.setCapability("fullReset", true); 
capabilities.setCapability("autoAcceptAlerts", true); 
capabilities.setCapability("newCommandTimeout", 0); 
capabilities.setCapability("app", "C:\Apk\xxx-release.apk"); 
capabilities.setCapability("appPackage", "com.xxx.android.vvm"); 
capabilities.setCapability("appActivity", "com.xxx.android.vvm.activity.Splash"); 

以下是IDE控制檯輸出日誌:

Feb 14, 2017 4:21:19 PM org.openqa.selenium.remote.ProtocolHandshake createSession 
INFO: Attempting bi-dialect session, assuming Postel's Law holds true on the remote end 
Feb 14, 2017 4:21:24 PM org.openqa.selenium.remote.ProtocolHandshake createSession 
INFO: Falling back to original OSS JSON Wire Protocol. 
Feb 14, 2017 4:21:29 PM org.openqa.selenium.remote.ProtocolHandshake createSession 
INFO: Falling back to straight W3C remote end connection 

org.openqa.selenium.SessionNotCreatedException: Unable to create new remote session. desired capabilities = Capabilities [{app=C:\Apk\xxx-release.apk, appPackage=com.xxx.android.vvm, appActivity=com.xxx.android.vvm.activity.Splash, newCommandTimeout=0, platformVersion=7.0, browserName=Android, platformName=Android, deviceName=Android, fullReset=true, autoAcceptAlerts=true}], required capabilities = Capabilities [{}] 
Build info: version: '3.0.1', revision: '1969d75', time: '2016-10-18 09:48:19 -0700' 
System info: host: 'TAC-45', ip: '10.3.184.68', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_111' 
Driver info: driver.version: AndroidDriver 

at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:91) 

,這裏是服務器日誌:

[debug] [AndroidDriver] Not cleaning generated files. Add clearSystemFiles capability if wanted. 
[MJSONWP] Encountered internal error running command: Error: Error executing adbExec. Original error: 'Command 'C\:\Android\sdk\platform-tools\adb.exe -P 5037 -s ZX1G22D7HJ install C\:\Users\user\AppData\Roaming\npm\node_modules\appium\node_modules\io.appium.settings\bin\settings_apk-debug.apk' exited with code 1'; Stderr: 'Failed to install C:\Users\user\AppData\Roaming\npm\node_modules\appium\node_modules\io.appium.settings\bin\settings_apk-debug.apk: Failure [INSTALL_FAILED_UPDATE_INCOMPATIBLE: Package io.appium.settings signatures do not match the previously installed version; ignoring!]'; Code: '1' 
at ADB.execFunc$ (../../../lib/tools/system-calls.js:195:13) 
at tryCatch (C:\Users\user\AppData\Roaming\npm\node_modules\appium\node_modules\babel-runtime\regenerator\runtime.js:67:40) 
at GeneratorFunctionPrototype.invoke as _invoke 
at GeneratorFunctionPrototype.prototype.(anonymous function) as throw 
at GeneratorFunctionPrototype.invoke (C:\Users\user\AppData\Roaming\npm\node_modules\appium\node_modules\babel-runtime\regenerator\runtime.js:136:37) 
at process.tickCallback (internal/process/nexttick.js:103:7) 
[HTTP] <-- POST /wd/hub/session 500 4879 ms - 754 
[HTTP] --> POST /wd/hub/session {"capabilities":{"desiredCapabilities":{"app":"C:\Apk\xxx-release.apk","appPackage":"com.xxx.android.vvm","appActivity":"com.xxx.android.vvm.activity.Splash","newCommandTimeout":0,"platformVersion":"7.0","browserName":"Android","platformName":"Android","deviceName":"Android","fullReset":true,"autoAcceptAlerts":true},"requiredCapabilities":{}}} 
[debug] [MJSONWP] Bad parameters: BadParametersError: Parameters were incorrect. We wanted {"required":["desiredCapabilities"],"optional":["requiredCapabilities","capabilities","sessionId","id","sessionId","id","sessionId","id"]} and you sent ["capabilities"] 

看起來功能存在錯誤。但是,當我使用Android 6插入手機並將platformVersion設置爲6.0時,所有測試運行都沒有問題!

我將不勝感激任何幫助。

回答

5

從設備中移除「解鎖」和「Appium設置」應用程序 - Appium會自動安裝這些應用程序。 (在我的原因中,將Android從版本6更新到版本7後,這些應用程序不兼容。

+0

它的工作!謝謝! – APC551

+0

這值得更多的「箭頭」。 幫助我肯定 – Dmitry

0

刪除「應用」功能,它試圖在設備上安裝的每一次。相反,在設備上手動安裝應用程序並嘗試。如果它不起作用,讓我知道還有一個解決方案,但我建議你先試試。

+0

取出「應用程序」的能力沒有幫助它顯示了同樣的錯誤 – APC551

0

由於錯誤日誌顯示

[INSTALL_FAILED_UPDATE_INCOMPATIBLE: Package io.appium.settings signatures do not match the previously installed version; 

通常這些錯誤出現,由於其設備上籤署的發行版本,然後嘗試部署在上面的調試版本。它陷入了一個無法完全卸載的無效狀態。

因爲這些原因,您的會話沒有創建,爲了避免這些請卸載設備上存在的應用程序,然後運行腳本。它應該工作。

希望這些幫助你。

+0

不幸的是,它不起作用。再次,無論應用程序是否安裝,我都能夠在Android 6上運行測試。我認爲問題在於: '錯誤的參數:BadParametersError:參數不正確。我們希望{「required」:[「desiredCapabilities」],「optional」:[「requiredCapabilities」,「capabilities」,「sessionId」,「id」,「sessionId」,「id」,「sessionId」,「id」] }並且你發送了[「capabilities」]' 但是我找不到答案究竟是什麼錯誤 – APC551

+0

okey然後你應該嘗試用最小參數嘗試最小功能,你有疑問並運行腳本 –

0

如果遇到此錯誤,請使用Android Studio從測試設備中卸載所有工件。打開右側的Gradle視圖Android的工作室

打開:。應用程序>任務>安裝和運行由雙uninstallAll任務單擊它