如何使用 Appium 传递 com.android.permissioncontroller.permission.ui.ReviewPermissionsActivity 屏幕?

问题描述 投票:0回答:0

我正在尝试学习 Appium,我正在尝试在这里做一些基本的事情。 这是我的环境配置。

  • java version "20.0.1" 2023-04-18Java(TM) SE Runtime Environment (build 20.0.1+9-29)Java HotSpot(TM) 64-Bit Server VM (build 20.0.1+9-29, mixed mode, sharing)I have a separate Java 8 installation so that uiautomatorviewer.bat works
    
  • Appium version 1.22.3
    
  • Node v20.0.0
    
  • Android Studio Flamingo | 2022.2.1Build #AI-222.4459.24.2221.9862592, built on March 31, 2023
    
  • Android EmulatorPixel 2XLAndroid 13.0
    
  • Eclipse Version: 2023-03 (4.27.0)
    

我正在尝试使用这个 apk https://github.com/appium-boneyard/sample-code/blob/master/sample-code/apps/ApiDemos/bin/ApiDemos-debug.apk

所以我创建了一个基类,我在其中初始化驱动程序

import java.io.File;
import java.net.MalformedURLException;
import java.net.URI;
import java.net.URISyntaxException;
import java.net.URL;
import io.appium.java_client.AppiumBy;
import io.appium.java_client.AppiumDriver;
import io.appium.java_client.android.options.UiAutomator2Options;

public class base {

    // permission controller package and activity
    static String PermissionControllerPackage = "com.google.android.permissioncontroller";
    static String PermissionControllerActivity = "com.android.permissioncontroller.permission.ui.ReviewPermissionsActivity";

    public static AppiumDriver options() throws MalformedURLException, URISyntaxException {

        File appDir = new File("src");
        File app = new File(appDir, "ApiDemos-debug.apk");
        URL localURL = new URI("http://127.0.0.1:4723/wd/hub").toURL();

        UiAutomator2Options capabilities = new UiAutomator2Options();
        AppiumDriver driver = null;
        capabilities.setPlatformName("Android");
        capabilities.setDeviceName("Emulator");
        capabilities.setApp(app.getAbsolutePath());
        driver = new AppiumDriver(localURL, capabilities);
        return driver;
    }

    public static void allowAppPermissionController() throws MalformedURLException, URISyntaxException {

        UiAutomator2Options capabilities = new UiAutomator2Options();
        AppiumDriver driver = null;
        capabilities.setPlatformName("Android");
        capabilities.setDeviceName("Emulator");
        capabilities.setAppPackage(PermissionControllerPackage);
        capabilities.setAppActivity(PermissionControllerActivity);
        URL localURL = new URI("http://127.0.0.1:4723/wd/hub").toURL();
        
        driver = new AppiumDriver(localURL, capabilities);
        driver.findElement(AppiumBy.xpath("//android.widget.Button[@text = 'Continue']")).click();
        driver.quit();

    }
}

我有这个基础课程,我正在尝试做一些简单的自动化操作

import java.net.MalformedURLException;
import java.net.URISyntaxException;
import java.time.Duration;

import io.appium.java_client.AppiumDriver;


public class basics extends base{

    public static void main(String[] args) throws MalformedURLException, URISyntaxException {
        // TODO Auto-generated method stub
        
        AppiumDriver driver = options();
        driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(5));
        allowAppPermissionController();

    }

}

当我执行程序时,应用程序打开,但我卡在了这个屏幕上。

这是 Appium 日志显示的内容:

**[debug] [ADB] Found package: 'com.google.android.permissioncontroller' and fully qualified activity name : 'com.android.permissioncontroller.permission.ui.ReviewPermissionsActivity'
[debug] [ADB] Incorrect package and activity. Retrying.**

如果我理解正确,问题是驱动程序已为其他应用程序初始化,无法在权限屏幕上执行操作。

我曾尝试在执行期间修改功能,但在谷歌搜索后似乎不可能

我还尝试为 com.android.permissioncontroller.permission.ui.ReviewPermissionsActivity 屏幕初始化一个新的驱动程序,但结果是一样的。

我也试过了

capabilities.setCapability("autoGrantPermissions", true)

解决方案对我来说似乎很明显,但我不知道如何完成它。将驱动程序的焦点更改为 com.android.permissioncontroller.permission.ui.ReviewPermissionsActivity 然后单击“接受”,最后将焦点返回到上一个应用程序,但我还没有找到这样做的方法。

如果有人有任何想法,将不胜感激

appium appium-android appium-java
© www.soinside.com 2019 - 2024. All rights reserved.