首页 > 解决方案 > Appium/wdio - 无法关闭 Android 上的位置权限警报

问题描述

我正在使用webdriver.io为混合Cordova应用程序编写一套Appium测试。

"appium": "^1.10.0",
"wdio-appium-service": "^0.2.3",
"wdio-jasmine-framework": "^0.3.8",
"webdriverio": "^4.14.1",

在我的一项测试中,我试图以编程方式接受在 WebView 之上的应用启动时呈现的位置权限本机模式。

我可以在 iOS 中使用browser.alertAccept()轻松做到这一点,但后者似乎不适用于 Android。

我还尝试切换到本机上下文以将其关闭,但没有运气。

function dismissLocationPermissions() {
  if (browser.isAndroid) {
    new WebView().switchToContext(0);
    browser.pause(2000);
    const ANDROID_ACCEPT_ALERT_SELECTOR = "//*[@class='android.widget.Button'][2]";
    // OR '*//android.widget.Button[@text="ALLOW"]' ?
    $(ANDROID_ACCEPT_ALERT_SELECTOR).click();
    WebView().switchToContext(1);
  } else {
    browser.alertAccept();
  }
}

如何使用 wdio 关闭 Android 上的本机警报?

在此处输入图像描述

标签: androidcordovaappiumhybrid-mobile-appwebdriver-io

解决方案


autoGrantPermissions DesiredCapability,如果您将其设置为true- Appium 将自动确定您的应用程序需要哪些权限,并在安装过程中将它们授予应用程序。

该功能false默认设置为,因此您需要像这样显式设置它:

DesiredCapabilities dc = new DesiredCapabilities();
dc.setCapability(MobileCapabilityType.NO_RESET, false);
dc.setCapability(AndroidMobileCapabilityType.AUTO_GRANT_PERMISSIONS, true);
driver = new AndroidDriver<>(url, dc);

更多信息:


推荐阅读