我正在尝试学习 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 然后单击“接受”,最后将焦点返回到上一个应用程序,但我还没有找到这样做的方法。
如果有人有任何想法,将不胜感激