我正在尝试运行一个简单的脚本,它会启动一个应用程序。当我使用Android 6.0但在android 7.0上失败时这很好用
这是脚本 -
DesiredCapabilities capabilities= new DesiredCapabilities();
capabilities.setCapability("deviceName","Moto G4 Plus");
capabilities.setCapability("platformName","Android");
capabilities.setCapability("platformVersion","7.0.");
capabilities.setCapability("appPackage","com.bigbasket.mobileapp");
capabilities.setCapability("appActivity","com.bigbasket.mobileapp.activity.HomeActivity");
AndroidDriver driver= new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
Thread.sleep(4000);
这是错误日志 -
错误:无法启动Appium会话,错误是:错误:命令失败:C:\ WINDOWS \ system32 \ cmd.exe / s / c“C:\ Users \ gadiisha \ AppData \ Local \ Android \ android- sdk \ platform-tools \ adb.exe -s ZY2237WRTC安装“D:\ Appium \ node_modules \ appium \ build \ settings_apk \ settings_apk-debug.apk”“ 无法安装D:\ Appium \ node_modules \ appium \ build \ settings_apk \ settings_apk-debug.apk:失败[INSTALL_FAILED_ALREADY_EXISTS:尝试重新安装io.appium.settings而不先卸载。]
info:[debug]错误:命令失败:C:\ WINDOWS \ system32 \ cmd.exe / s / c“C:\ Users \ gadiisha \ AppData \ Local \ Android \ android-sdk \ platform-tools \ adb .exe -s ZY2237WRTC安装“D:\ Appium \ node_modules \ appium \ build \ settings_apk \ settings_apk-debug.apk”“ 无法安装D:\ Appium \ node_modules \ appium \ build \ settings_apk \ settings_apk-debug.apk:失败[INSTALL_FAILED_ALREADY_EXISTS:尝试重新安装io.appium.settings而不先卸载。]
at ChildProcess.exithandler (child_process.js:751:12) at ChildProcess.emit (events.js:110:17) at maybeClose (child_process.js:1016:16) at Process.ChildProcess._handle.onexit (child_process.js:1088:5)
info:[debug]响应客户端错误:{“status”:33,“value”:{“message”:“无法创建新会话。(原始错误:命令失败:C:\ WINDOWS \ system32 \ cmd.exe / s / c \“C:\ Users \ gadiisha \ AppData \ Local \ Android \ android-sdk \ platform-tools \ adb.exe -s ZY2237WRTC install \”D:\ Appium \ node_modules \ appium \ build \ settings_apk \ settings_apk-debug.apk \“\”\ n无法安装D:\ Appium \ node_modules \ appium \ build \ settings_apk \ settings_apk-debug.apk:失败[INSTALL_FAILED_ALREADY_EXISTS:尝试重新安装io.appium。没有先卸载的设置。] \ r \ n)“,”kill“:false,”code“:1,”signal“:null,”cmd“:”C:\ WINDOWS \ system32 \ cmd.exe / s / c \“C:\ Users \ gadiisha \ AppData \ Local \ Android \ android-sdk \ platform-tools \ adb.exe -s ZY2237WRTC install \”D:\ Appium \ node_modules \ appium \ build \ settings_apk \ settings_apk-debug.apk \“\”“,”origValue“:”命令失败:C:\ WINDOWS \ system32 \ cmd.exe / s / c \“C:\ Users \ gadiisha \ AppData \ Local \ Android \ android-sdk \ platform-tools \ adb.exe -s ZY2237WRTC安装\“D:\ Appiu m \ node_modules \ appium \ build \ settings_apk \ settings_apk-debug.apk \“\”\ n无法安装D:\ Appium \ node_modules \ appium \ build \ settings_apk \ settings_apk-debug.apk:失败[INSTALL_FAILED_ALREADY_EXISTS:尝试重新启动安装io.appium.settings而不先卸载。] \ r \ n“},”sessionId“:null} info:< - POST / wd / hub / session 500 10506.783 ms - 1306
详情 - 1. Appium for windows 2. appium version 1.4.16.1 3. eclipse(luna)
到目前为止我尝试过的解决方案 -
升级到最新版本的Appium - 1.6.5(它没有用,所以我降级为Appium 1.4.16.1
从移动设备上删除了appium设置和解锁文件夹。
删除了应用程序,然后重新启动appium服务器并在此之后再次运行脚本
我在门户网站上看到过类似的问题,但是如果没有适当的解决方案,他们所有人都会进行冗长的讨论。请帮我解决这个问题。 感谢
答案 0 :(得分:2)
这是Android OS 7.0版设备的已知问题
Appium在初始化驱动程序时在设备上安装了两个应用程序(设置和解锁程序)(对于非7.0 os版本的设备,它没有任何问题)。
当您尝试在同一设备上再次初始化appium驱动程序时,appium无法安装这两个应用程序并且无法初始化驱动程序。
解决方案:对于Android OS 7.0,在启动appium服务器之前,您需要从设备上卸载解锁器应用和设置应用。您可能在具有不同操作系统版本的设备上运行脚本,因此最好为卸载解锁器和设置应用程序设置条件。
以下是步骤,但您可以根据自己的要求进行修改。
1.首先通过adb命令获取设备的操作系统版本并将其存储在字符串中。
以下是上述两个步骤的组合代码段:
String cmd = "adb shell getprop ro.build.version.release";
String osVersion=executeCommand(cmd);
if(osVersion.contains("7"))
{
//uninstall io.appium.settings
cmd="adb uninstall io.appium.settings";
executeCommand(cmd);
//uninstall io.appium.unlock
cmd="adb uninstall io.appium.unlock";
executeCommand(cmd);
}
public String executeCommand(String cmd)
{
String commandresponse="";
try
{
Runtime run = Runtime.getRuntime();
Process proc=run.exec(cmd);
BufferedReader stdInput = new BufferedReader(new
InputStreamReader(proc.getInputStream()));
BufferedReader stdError = new BufferedReader(new
InputStreamReader(proc.getErrorStream()));
String response=null;
while ((response = stdInput.readLine()) != null)
{
if(response.length()>0)
{
commandresponse=commandresponse+response;
}
}
while ((response = stdError.readLine()) != null)
{
commandresponse=commandresponse+response;
}
}
catch(Exception e)
{
e.printStackTrace();
}
//System.out.println(commandresponse);
return commandresponse;
}
注意:以上代码段的编写考虑到只有一台设备连接到本机,因此所有adb命令仅转到该设备。如果您已将多个设备连接到本机,则可以断开未使用的设备或在代码中的上述adb命令中添加deviceSerialNumber参数。
希望这会有所帮助:)
答案 1 :(得分:0)
在运行脚本之前运行adb -s device_serial uninstall io.appium.settings
和adb -s device_serial uninstall io.appium.unlock
。
答案 2 :(得分:0)
在解决问题后尝试卸载应用程序,然后再运行自动化并在终端中执行以下命令
adb uninstall io.appium.settings
adb uninstall io.appium.unlock