Подскажите, пожалуйста.
Есть 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();
Боюсь, что и в правду алерта не видно
Это же не алерт.
Ну тогда просто ожидайте появление кнопочки ‘NOT NOW’ и тыкайте в нее (ну или что у вас там по кейсу) )
прошло по тексту)
Попробуй Selenide, там есть прекрасный метод confirm() , который ждёт Алерт и принимает его http://selenide.org
В данном случае не алерт показывается, обычное окно с кнопками.