Невозможно принять / отклонить всплывающее окно с разрешениями на расположение на устройствах Android во время выполнения сценариев в Amazon Device Farm - PullRequest
0 голосов
/ 28 мая 2019

ссылка на всплывающее изображение местоположения Я пытаюсь выполнить сценарии автоматизации (Appium + Java + TestNG / Junit) на Amazon DeviceFarm, но во время выполнения сценарии не смогли выполнить какое-либо действие ((Access / Deny ) во всплывающем окне «Разрешение на местоположение». Не удалось увидеть журналы ошибок в консоли. Я использовал обычную операцию click (), а также функцию alert (). В этом случае ничего не работает.

Пожалуйста, помогите мне. Ниже приведен фрагмент кода, который я пробовал ..

        WebDriverWait wait = new WebDriverWait(android, 5);
        wait.until(ExpectedConditions.alertIsPresent());
        driver.switchTo().alert().dismiss();
        }catch(Throwable t) {
            System.out.println("Not an alert popup or alert is not present..");
            driver.findElement(By.id("idofthelocator")).click();
        }

Ответы [ 2 ]

0 голосов
/ 18 июля 2019

К сожалению, cap.setCapability(AndroidMobileCapabilityType.AUTO_GRANT_PERMISSIONS, "true"); у меня тоже не сработало. Итак, я попытался найти локаторы всплывающего окна, как обычно, и затем щелкнуть по нему, и это сработало как шарм. Не могли бы вы также попробовать найти локаторы и нажать на кнопку при необходимости. Ниже код работает в моем случае:

`//Location service pop up
@FindBy(id ="com.android.packageinstaller:id/dialog_container")
public WebElement locationPopup;

//Location service allow button
@FindBy(id = "com.android.packageinstaller:id/permission_allow_button")
public WebElement locationPopupAllowButton;

WebDriverWait wait = new WebDriverWait(driver, 20);
wait.until(ExpectedConditions.visibilityOf(locationPopup));
locationPopupAllowButton.click();`

Надеюсь, это поможет:)

0 голосов
/ 28 мая 2019

В тестах Android Appium можно отключить всплывающие окна с разрешениями, установив для autoGrantPermission значение true. Эта возможность оценивает приложение на наличие необходимых ему разрешений и запускает команду adb для предоставления доступа к приложению. Вот код в проекте Appium, который делает это:

https://github.com/appium/appium-android-driver/blob/959e07d84dc9d09a11735872259ac87511d03b85/lib/android-helpers.js#L334

https://github.com/appium/appium-adb/blob/e6bdc234e7dcf61e0252aad3ac7ab47491fe3720/lib/tools/adb-commands.js#L186

Можете ли вы попробовать эту возможность и сообщить нам, если это поможет?

В тестах iOS Appium функция autoGrantPermission НЕ работает с версией Appium ниже 1.9.1, поскольку через API Apple нет способа предсказать необходимые разрешения или принять их. Обходной путь - либо найти элемент вручную, распечатав исходный код страницы и проверив его на лету, либо использовать следующие строки для использования методов селена:

driver.switchTo().alert().accept();
driver.switchTo().alert().dismiss();

В более поздних версиях Appium были внесены изменения для использования возможности autoGrantPermission, действительной для тестов iOS. Вот PR для этого запроса

https://github.com/appium/appium-xcuitest-driver/commit/f5267acab3bc9285161397fa19a8daf60ae0c6ae

Можете ли вы сообщить нам, какую версию Appium вы используете в этом случае, и предоставить некоторые из журналов сервера Appium от запуска в Device Farm и вашего локального выполнения?

...