Appium 未知错误:处理命令时发生未知的服务器端错误。原始错误:重新安装需要“应用程序”选项

Posted

技术标签:

【中文标题】Appium 未知错误:处理命令时发生未知的服务器端错误。原始错误:重新安装需要“应用程序”选项【英文标题】:Appium unknow error: An unknown server-side error occurred while processing the command. Original error: 'app' option is required for reinstall 【发布时间】:2020-02-14 08:22:36 【问题描述】:

我以管理员权限启动 Appium 我使用 Appium 高级设置中的允许会话覆盖

我只想从我的设备上启动一个应用程序,该应用程序已经安装但我收到此错误: 处理命令时发生未知的服务器端错误。原始错误:重新安装需要“应用”选项

这是我尝试运行的代码

package appiumtests;

import java.net.URL;

import org.openqa.selenium.remote.DesiredCapabilities;

import io.appium.java_client.AppiumDriver;
import io.appium.java_client.MobileElement;

public class Appiumtest 



    static AppiumDriver<MobileElement> driver;


    public static void main(String[] args) 

        try 
             openCasino();
        catch(Exception exp) 
            System.out.println(exp.getCause());
            System.out.println(exp.getMessage());
            exp.printStackTrace();
               

    

    public static void openCasino() throws Exception  

        DesiredCapabilities cap = new DesiredCapabilities();


        cap.setCapability("deviceName","Mi A1");        
        cap.setCapability("udid","1d36c8469805");
        cap.setCapability("platformName", "android");
        cap.setCapability("platformVersion", "9");
        cap.setCapability("appPackage", "eu.fortunagroup.casino.efortuna.ro.splashscreen.SplashScreenActivity");
        cap.setCapability("appActivity", "splashscreen.SplashScreenActivity.Casino");
        cap.setCapability("appWaitDuration,30000",true);
        cap.setCapability("", "");
        cap.setCapability("launchActivity ", "old.SplashActivity");
        cap.setCapability("newCommandTimeout", "3000");


        URL url = new URL("http://0.0.0.0:4723/wd/hub");    

        driver = new AppiumDriver<MobileElement>(url, cap);     

        System.out.println("Application Started");



       


【问题讨论】:

Domnu Vasile,错误发生在服务器端,所以我建议您检查服务器日志以找出问题所在。 什么是launchActivity 能力?顺便说一句,你在它后面加了一个空格,这行不通。尝试删除该功能并再次运行它。 @LajosArpad - 服务器日志在这里:pastebin.com/EGzTcQcN @Vault23 我删除了那个上限并重做。同样的错误。上面的评论是服务器日志。谢谢 'eu.fortunagroup.casino.efortuna.ro.splashscreen.SplashScreenActivity' is not installed 请再次检查您的appPackageappActivity 【参考方案1】:

如果您想检查您是否使用了正确的 appPackage 和 appActivity,请通过终端或 cmd 启动它。

如果此 adb 命令在您的真实设备或模拟器上启动您的 APK 文件,则表示 [appPackage & appActivity] 有效。使用活动名称或包,直到找到正确的值。

adb shell am start -W -n package_name/expected_activity_name -S -a android.intent。 action.MAIN -c android.intent.category.LAUNCHER -f 0x10200000

【讨论】:

开始:Intent act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=eu.fortunagroup.casino.efortuna.ro/com.playtech .unified.splashscreen.SplashScreenActivity 状态:ok 活动:eu.fortunagroup.casino.efortuna.ro/com.playtech.unified.splashscreen.SplashScreenActivity ThisTime:1423 TotalTime:1423 WaitTime:1463 Complete 应用程序已启动,但我无法启动它使用 appium @ConstantinVasile 尝试将您的 appium 桌面更新到最新版本,我相信 1.15.1 已经可用。【参考方案2】:

我建议您在设备中安装应用程序,并通过单独测试 appPackage 和 appActivity 参数来查看它是否工作。

您可以通过以下操作查看您的appPackage和appActivity是否正确

    插入您的 Android 设备并启动应用程序 adb 设备 如果有设备连接。壳吧adb shell 运行这个dumpsys window windows | grep -E ‘mCurrentFocus’

参考图片。您将获得 appPackage 和 appActivity。

让我知道这是否适用于 2 个参数。

还是不能工作?测试你的 appActivity 或 appPackage 是否正确 如果上述方法不起作用,请在已安装应用的情况下执行此操作

adb shell am start -n com.package.name/com.package.name.ActivityName

如果这仍然不起作用,您很可能得到了 appName 或 appActivity 不正确。 参考:https://medium.com/@ivantay2003/appium-desired-capabilities-basic-cheat-sheet-to-launch-mobile-application-ios-android-75b664367031

【讨论】:

嗨。该应用程序已经安装并且可以正常运行。我做了你的建议并发现: cmp=eu.fortunagroup.casino.efortuna.ro/com.playtech.unified.splashscreen.SplashScreenActivity 使用这些,我仍然无法启动应用程序 可能还有另一种可能。即使我在上述方法中获得了 appActivity,但可能存在此方法未捕获的早期活动。 appActivity 出现得较早,但是当我们使用 shell 时,它是不正确的后来的活动。即使我使用这种方法,我也发现了这一点。我从开发人员那里发现在此之前有一个更早的活动(但它消失得很快)。一种方法是与开发人员确认这是启动时的第一个活动。如果已经安装了应用程序,则将 noReset 设置为 true。错误应该会消失。 我已经修改了答案并添加了 adb 命令。如果 adb cmd 不起作用,很可能是 appActivity 或 appPackage 错误。 嗨@john - 我解决了这个问题。我所要做的就是将 JDK 添加到 Eclipse。我在答案上方发表了评论。谢谢!【参考方案3】:

我解决了这个问题!

我所要做的就是将 JDK 添加到 Eclipse。在这里能找到它: Setting JDK in Eclipse

右键单击您的项目>属性 选择左侧的“Java Build Path”,然后选择“JRE System Library”,点击Edit… 选择“工作区默认 JRE” 单击“已安装的 JRE” 如果您在列表中看到所需的 JRE,请选择它(选择 JDK 也可以) 如果没有,请单击搜索...,导航到计算机 > Windows C: > 程序文件 > Java,然后单击确定 现在您应该看到所有已安装的 JRE,选择您想要的 单击确定/完成一百万次

我没有选择 JRE,而是选择了 JDK 文件夹并启动了应用程序。

谢谢大家!

【讨论】:

以上是关于Appium 未知错误:处理命令时发生未知的服务器端错误。原始错误:重新安装需要“应用程序”选项的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Eclipse 在 Appium 上运行脚本测试?

处理证书时发生未知错误

将真实 iOS 设备与 Appium 服务器连接时出错

移动自动化与 appium -- Selenium 驱动程序

TestNG中Appium测试用例的顺序执行导致测试用例失败

原始错误 packageAndLaunchActivityFrommanifest failed