python 報錯信息
selenium.common.exceptions.WebDriverException: Message: A new session could not be created. (Original error: Command failed: C:\Windows\system32\cmd.exe /s /c "D:\android-sdk-windows\platform-tools\adb.exe -s 91f7e690 install "C:\Program Files (x86)\Appium\node_modules\appium\build\settings_apk\settings_apk-debug.apk""
Failed to install C:\Program Files (x86)\Appium\node_modules\appium\build\settings_apk\settings_apk-debug.apk: Failure [INSTALL_FAILED_ALREADY_EXISTS: Attempt to re-install io.appium.settings without first uninstalling.]
appium 報錯信息
info: [debug] Responding to client with error: {"status":33,"value":{"message":"A new session could not be created. (Original error: Command failed: C:\\Windows\\system32\\cmd.exe /s /c \"D:\\android-sdk-windows\\platform-tools\\adb.exe -s 91f7e690 install \"C:\\Program Files (x86)\\Appium\\node_modules\\appium\\build\\settings_apk\\settings_apk-debug.apk\"\"\nFailed to install C:\\Program Files (x86)\\Appium\\node_modules\\appium\\build\\settings_apk\\settings_apk-debug.apk: Failure [INSTALL_FAILED_ALREADY_EXISTS: Attempt to re-install io.appium.settings without first uninstalling.]\r\n)","killed":false,"code":1,"signal":null,"cmd":"C:\\Windows\\system32\\cmd.exe /s /c \"D:\\android-sdk-windows\\platform-tools\\adb.exe -s 91f7e690 install \"C:\\Program Files (x86)\\Appium\\node_modules\\appium\\build\\settings_apk\\settings_apk-debug.apk\"\"","origValue":"Command failed: C:\\Windows\\system32\\cmd.exe /s /c \"D:\\android-sdk-windows\\platform-tools\\adb.exe -s 91f7e690 install \"C:\\Program Files (x86)\\Appium\\node_modules\\appium\\build\\settings_apk\\settings_apk-debug.apk\"\"\nFailed to install C:\\Program Files (x86)\\Appium\\node_modules\\appium\\build\\settings_apk\\settings_apk-debug.apk: Failure [INSTALL_FAILED_ALREADY_EXISTS: Attempt to re-install io.appium.settings without first uninstalling.]\r\n"},"sessionId":null}
> info: <-- POST /wd/hub/session 500 8818.233 ms - 1303
解決方法1:
在真機(jī)上 手動卸載 ?AppimSetting ?和 ?Unlock 兩個應(yīng)用
解決方法2(注釋安裝應(yīng)用的代碼):
在window 系統(tǒng)下,找到appium 安裝目錄
C:\Program Files (x86)\Appium\node_modules\appium\lib\devices\android
找到Android.js 文件,注釋下述的三行代碼即可:(顏色為紅色的代碼行)
如果手機(jī)上未安裝這兩個應(yīng)用:
解決方法3:
1. adb.js 中1035 行this.shell("ps '" + name + "'", function (err, stdout) {
對應(yīng)執(zhí)行的指令是ps 'uiautomator', Android7不支持這個指令格式塑悼,所以執(zhí)行結(jié)果是bad pid'uiautomator'
目前Appium未對此進(jìn)行處理,所以需要修改此指令的執(zhí)行方式
即將
this.shell("ps '" + name + "'", function (err, stdout) {
if (err) return cb(err);
替換成
this.shell_grep("ps", name, function (err, stdout) {
if (err) {
logger.debug("No matching processes found");
return cb(null, []);
}
并增加上面用到的shell_grep函數(shù):
ADB.prototype.shell_grep = function (cmd, grep, cb) {
if (cmd.indexOf('"') === -1) {
cmd = '"' + cmd + '"';
}
var execCmd = 'shell ' + cmd + '| grep ' + grep;
this.exec(execCmd, cb);
};