【问题标题】:Appium/wdio - unable to dismiss location permissions alert on AndroidAppium/wdio - 无法关闭 Android 上的位置权限警报
【发布时间】:2019-05-10 06:45:41
【问题描述】:

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

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

在我的一项测试中我正在尝试以编程方式接受 Location Permissions 本机模式,该模式在 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 上的本机警报?

【问题讨论】:

    标签: android cordova appium hybrid-mobile-app webdriver-io


    【解决方案1】:

    autoGrantPermissionsDesiredCapability,如果您将其设置为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);
    

    更多信息:

    【讨论】:

    • 我不想自动授予权限,我需要测试所有权限流程。无论如何谢谢
    【解决方案2】:
    1. 权限对话框是原生的,因此您无需切换到 web 视图即可将其关闭。
    2. 有一个 android id 与允许/拒绝权限按钮相关联,因此您可以使用它来代替您使用的标识符。

    allow 按钮的 id 是:com.android.packageinstaller:id/permission_allow_button
    id 对应 deny 按钮是:com.android.packageinstaller:id/permission_deny_button

    【讨论】:

    • 1 - 反过来,应用程序在 web 视图中运行,所以我需要切换到本机层。 2 - 似乎无法使它工作:(
    • 我让它正常工作,切换到正确的上下文(我必须传递 0 作为本机的参数)并使用这个选择器:"//android.widget.Button[@resource-id='com.android.packageinstaller:id/permission_allow_button']"。谢谢
    • Android Q 为这个 ID 提供了一个新 ID:com.android.permissioncontroller:id/permission_allow_foreground_only_button
    猜你喜欢
    • 1970-01-01
    • 2017-10-27
    • 1970-01-01
    • 2015-01-29
    • 2017-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-08
    相关资源
    最近更新 更多