t.me/atinfo_chat Telegram группа по автоматизации тестирования

Не могу дождаться Alert, тест прекращается через 15 секунд

Теги: #<Tag:0x00007f9b044087a0> #<Tag:0x00007f9b044085e8> #<Tag:0x00007f9b044083e0> #<Tag:0x00007f9b04408278> #<Tag:0x00007f9b0440f5a0> #<Tag:0x00007f9b0440f2a8>

Подскажите, пожалуйста.
Есть Android приложение. По умолчанию, через 30 сек должен появиться alert с двумя кнопками, но тест не дожидается и прекращается через 15 сек.
@Test public void testStartMyActivity () throws IOException, InterruptedException { driver.findElement(By.className("android.widget.ImageButton")).click(); WebDriverWait wait = new WebDriverWait(driver,30); try { wait.until(ExpectedConditions.alertIsPresent()); Alert alert = driver.switchTo().alert(); alert.accept(); driver.findElement(By.xpath("android.widget.Button[@index='0'")).click(); Thread.sleep(5000); }catch (Exception e){ captureScreenShots(); System.out.println("No alert");}}

Исключение падает какое-то? Поделитесь логами

На какой строчке падает? на wait.until(ExpectedConditions.alertIsPresent())?

И на какой строчке и какое именно исключение из логов. И еще интересно зачем там Thread.sleep(5000);, хотя я так понял до этого момента приложение не доходит…

Попробуйте ждать не Алерт, а конкретный элемент, которым этот алерт является.
типа:

wait.until(ExpectedConditions.visibilityOfElementLocated(By.id(“alert_window_id”));

И проверте в UiAutomatorviewer виден ли этот алерт в иерархии, бывает что иногда такого накастомизируют, что просто недостучаться.

Также уберите try-catch блок, Вы ведь и так исключение указали в сигнатуре метода. После этого запустите тест, и посмотрите откуда вылетело исключение.

Похоже есть ещё ошибка в xpath
driver.findElement(By.xpath(“android.widget.Button[@index=‘0’”)).click();

Нет закрывающей скобки “]”.
driver.findElement(By.xpath(“android.widget.Button[@index=‘0’]”)).click();

1 Симпатия

Боюсь, что и в правду алерта не видно

Это же не алерт.

Ну тогда просто ожидайте появление кнопочки ‘NOT NOW’ и тыкайте в нее (ну или что у вас там по кейсу) )

прошло по тексту)

1 Симпатия

Попробуй Selenide, там есть прекрасный метод confirm() , который ждёт Алерт и принимает его http://selenide.org

В данном случае не алерт показывается, обычное окно с кнопками.