Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

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

alert
selenium
webdriver
java
android
appium
Теги: #<Tag:0x00007f7b69895170> #<Tag:0x00007f7b69894db0> #<Tag:0x00007f7b698949c8> #<Tag:0x00007f7b69894018> #<Tag:0x00007f7b698a7d98> #<Tag:0x00007f7b698a7a50>

(Lera Leschenko) #1

Подскажите, пожалуйста.
Есть 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");}}


(Aleksey Ilyenko) #2

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


(Nik Sidorenko) #3

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


(Eugene Moskalenko) #4

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


(Yaroslav Pernerovskyy) #5

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

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

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


(Aleksey Ilyenko) #6

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


(Nik Sidorenko) #7

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

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


(Lera Leschenko) #8

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


(Bolatbek) #9

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


(Yaroslav Pernerovskyy) #10

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


(Lera Leschenko) #11

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


(Andrey Ryoo) #12

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


(Yaroslav Pernerovskyy) #13

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