Appium / wdio - не удается отключить оповещение о разрешении местоположения на Android - PullRequest
1 голос
/ 10 мая 2019

Я использую webdriver.io , чтобы написать набор Appium тестов для гибрида Cordova App.

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

В одном из моих тестов Я пытаюсь программно принять Собственный модальный каталог Разрешения *1014*, представленный при запуске приложения поверх 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();
  }
}

Как я могу отключить встроенное оповещение на Android с помощью wdio?

enter image description here

Ответы [ 2 ]

1 голос
/ 10 мая 2019

Существует 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);

Дополнительная информация:

1 голос
/ 10 мая 2019
  1. Диалоговое окно разрешений является собственным, поэтому вам не нужно переключаться на веб-просмотр, чтобы закрыть его.
  2. С кнопкой разрешения / запрета связан Android id, поэтомуВы можете использовать это вместо идентификатора, который вы использовали.

Кнопка id для allow: com.android.packageinstaller:id/permission_allow_button.
Кнопка id для deny: com.android.packageinstaller:id/permission_deny_button

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...