java - Appium 无法启动 Mainactivity/Splashscreen

标签 java android appium robotframework appium-android

我有这个 Java 脚本:

import java.io.File;
import java.net.MalformedURLException;
import java.net.URL;
import org.openqa.selenium.interactions.internal.MouseAction.Button;
import org.openqa.selenium.remote.DesiredCapabilities;

import io.appium.java_client.android.AndroidDriver;
import io.appium.java_client.android.AndroidElement;
import io.appium.java_client.remote.AndroidMobileCapabilityType;
import io.appium.java_client.remote.MobileCapabilityType;

public class PABT_Test {

    public static void main(String[] args) throws MalformedURLException, InterruptedException {

         File appDir = new File("src");
         File app = new File(appDir, "me.user.myapp.apk");

        DesiredCapabilities cap = new DesiredCapabilities();
    cap.setCapability(MobileCapabilityType.DEVICE_NAME, "9889db344647575839");
        //cap.setCapability(MobileCapabilityType.DEVICE_NAME, "9889db344647575839");
//      cap.setCapability(MobileCapabilityType.APP, app.getAbsolutePath());
        cap.setCapability(MobileCapabilityType.APP, app.getAbsolutePath());
//      cap.setCapability(AndroidMobileCapabilityType.APP_WAIT_ACTIVITY, "me.user.*");
//      cap.setCapability("appActivity", "md56babf71b8936f51000b2474a3f146837.SplashActivity");
//      cap.setCapability("waitForAppScript","$.delay(100); true;");
//      cap.setCapability("appWaitActivity", "md56babf71b8936f51000b2474a3f146837.SplashActivity, " + "md56babf71b8936f51000b2474a3f146837.MainActivity" );
        AndroidDriver<AndroidElement> driver = new AndroidDriver<AndroidElement>(new URL("http://127.0.0.1:4723/wd/hub"),cap);
        AndroidElement Skip =driver.findElementByLinkText("Skip");
        Skip.click();
        driver.wait(3000);

    }
}

我也尝试在机器人框架中做到这一点。代码如下:

*** Settings ***
Library           AppiumLibrary

*** Variables ***
${App_PA}       C:/Android/me.user.myapp.apk

*** Test Cases ***
   Open_App
    ${App}    Set Variable    ${App_PA}
    Open Application    http://localhost:4723/wd/hub    platformName=Android    platformVersion=7.0    deviceName=9889db344647575839    app=${App}    automationName=appium
    sleep    1s
    Click Text    Next
    sleep    1s
    Click Text    Next
    sleep    1s
    Click Text    Get Started
    Wait Until Page Contains    Main Menu

在这两种情况下我都会遇到相同的错误

 [ADB] Running 'C:\Users\user\AppData\Local\Android\Sdk\platform-tools\adb.exe' with args: ["-P",5037,"-s","9889db344647575839","shell","dumpsys","window"]
    [AndroidDriver] Screen already unlocked, doing nothing
    [ADB] Device API level: 24
        [ADB] Getting connected devices...
        [ADB] 1 device(s) connected
        [ADB] Running 'C:\Users\user\AppData\Local\Android\Sdk\platform-tools\adb.exe' with args: ["-P",5037,"-s","9889db344647575839","shell","am","start","-W","-n","me.user.myapp/md56babf71b8936f51000b2474a3f146837.SplashActivity","-S"]
        [ADB] Waiting up to 20000ms for activity matching pkg: 'me.user.myapp' and activity: 'md56babf71b8936f51000b2474a3f146837.SplashActivity' to be focused
        [ADB] Possible activities, to be checked: 'md56babf71b8936f51000b2474a3f146837.SplashActivity'
        [ADB] Getting focused package and activity
        [ADB] Getting connected devices...
        [ADB] 1 device(s) connected
        [ADB] Running 'C:\Users\user\AppData\Local\Android\Sdk\platform-tools\adb.exe' with args: ["-P",5037,"-s","9889db344647575839","shell","dumpsys","window","windows"]
        [ADB] Found package: 'me.user.myapp' and fully qualified activity name : 'md56babf71b8936f51000b2474a3f146837.MainActivity'
        [ADB] Incorrect package and activity. Retrying.
        [ADB] Getting focused package and activity
        [ADB] Getting connected devices...
        [ADB] 1 device(s) connected
        ....
        [AndroidDriver] Shutting down Android driver
        [ADB] Getting connected devices...
        [ADB] 1 device(s) connected
        [ADB] Running 'C:\Users\user\AppData\Local\Android\Sdk\platform-tools\adb.exe' with args: ["-P",5037,"-s","9889db344647575839","shell","am","force-stop","me.user.myapp"]
        [ADB] Pressing the HOME button
        [ADB] Getting connected devices...
        [ADB] 1 device(s) connected

我已经搜索了SO和其他资源,并根据我完成测试的反馈..您可以在Java代码的注释掉的部分中看到我失败的尝试。

使用 adb 直接执行更新:

我运行以下命令,应用程序已加载,但我无法在 java 或机器人上复制此成功

c:\Users\user\AppData\Local\Android\Sdk\platform-tools>adb shell am start -a android.intent.action.MAIN -n me.user.myapp/md56babf71b8936f51000b2474a3f146837.SplashActivity
Starting: Intent { act=android.intent.action.MAIN cmp=me.user.myapp/md56babf71b8936f51000b2474a3f146837.SplashActivity launchParam=MultiScreenLaunchParams { mDisplayId=0 mBaseDisplayId=0 mFlags=0 } }

另一方面,当 Activity 设置为“MainActivity”时,运行此命令实际上无法启动应用程序并显示权限被拒绝错误。

c:\Users\user\AppData\Local\Android\Sdk\platform-tools>adb shell am start -a android.intent.action.MAIN -n me.user.myapp/md56babf71b8936f51000b2474a3f146837.MainActivity
Starting: Intent { act=android.intent.action.MAIN cmp=me.user.myapp/md56babf71b8936f51000b2474a3f146837.MainActivity launchParam=MultiScreenLaunchParams { mDisplayId=0 mBaseDisplayId=0 mFlags=0 } }
java.lang.SecurityException: Permission Denial: starting Intent { act=android.intent.action.MAIN flg=0x10000000 cmp=me.user.myapp/md56babf71b8936f51000b2474a3f146837.MainActivity launchParam=MultiScreenLaunchParams { mDisplayId=0 mBaseDisplayId=0 mFlags=0 } } from null (pid=2984, uid=2000) not exported from uid 10497
    at android.os.Parcel.readException(Parcel.java:1693)
    at android.os.Parcel.readException(Parcel.java:1646)
    at android.app.ActivityManagerProxy.startActivityAsUser(ActivityManagerNative.java:3603)
    at com.android.commands.am.Am.runStart(Am.java:663)
    at com.android.commands.am.Am.onRun(Am.java:392)
    at com.android.internal.os.BaseCommand.run(BaseCommand.java:51)
    at com.android.commands.am.Am.main(Am.java:125)
    at com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method)
    at com.android.internal.os.RuntimeInit.main(RuntimeInit.java:316)

最佳答案

做一件事,只需要求开发人员提供应用程序的启动器 Activity 即可。上周我在使用 Android 应用程序时遇到了同样的问题,问题是我认为是启动 Activity 的 Activity 并非如此。发射 Activity 是另一回事。所以只要和开发者澄清一次就可以了。

来自Upwork

关于java - Appium 无法启动 Mainactivity/Splashscreen,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48733824/

相关文章:

java - Apache Jena RDFWriter.setProperty 无效

android - ViewPager 中的 fragment 在旋转时未在其 RecyclerView 中显示任何内容

Android 应用程序在版本中无法运行2.3

java - AppiumDriver 给出空指针异常

android - 不包含子 appium 的 Xpath

java - Intellij 生成静态最终字段

java - 为什么德语本地化的 DecimalFormat 在 Java 中成功地将 "3.2"解析为十进制?

java - 我需要从 txt 文件上的 1000 个数字的列表创建一个数组列表。 java

android - 如何从 JNI/NDK C++ 代码访问/res/raw?

android - 我在使用 Appium 时运行 testNG 时应用程序崩溃