2016-04-20 4 views
0

Я тестирую страницу сайта с помощью Webdriver/Java, которая содержит много полей. Одним из полей является раскрывающийся список (или поле выбора), и он содержит проверку после потери фокуса (например, табуляция). Поэтому, если я выберу конкретную опцию в раскрывающемся списке и вкладке в следующее поле, появится окно предупреждения, в котором говорится: «Вы не можете выбрать это!».Selenium alert только показывает в режиме отладки

Теперь я делаю код, который проверяет наличие окна предупреждения и принимает его, однако это работает только для меня в режиме DEBUG. При запуске теста (т. Е. Не в отладке) я получаю «Тайм-аут через 10 секунд, ожидая присутствия оповещения». Информация о сборке: версия: «2.53.0».

Я понимаю, что это, вероятно, проблема времени, поскольку он работает в режиме DEBUG, но я не могу понять, почему, поскольку я использую ExpectedConditions.alertIsPresent(). Код, где это не удается здесь:

WebElement currentElement = driver.findElement(By.id("selectbox")); 
Select currentSelect = new Select(currentElement); 
currentSelect.selectByVisibleText(updatedValue);  
currentElement.sendKeys(Keys.TAB); 

System.out.println("milestoneA"); 
if ((exceptionExpected()) { 
    System.out.println("milestoneB");  
    wait.until(ExpectedConditions.alertIsPresent());        
    System.out.println("milestoneC"); 
    checkAlertBox(getExpectedResultFromExcel());        
} 

В режиме DEBUG, код продолжает идти хорошо, и все хорошо. В режиме RUN в моих журналах я поднимаюсь до milestoneB, а затем вызывается вышеупомянутая ошибка.

В дополнение к этому, если я добавляю Thread.sleep (1000) перед Tabbing, все работает нормально.

Любые идеи, пожалуйста?

+0

сфокусирован Когда тайм-аут Ставится переключатель? –

+0

Нет, на самом деле, основное внимание уделяется следующему элементу. Итак, что я сделал, я сделал thread.sleep (3000) непосредственно перед sendKeys (Keys.TAB), и он сработал! Поэтому я не уверен, что делать сейчас. На самом деле не видна опция, которая имеет смысл в ExpectedConditions. Любая идея, пожалуйста? – Dragonfly

ответ

1

Я бы попытаться послать ключ TAB пока элемент теряет фокус:

WebElement currentElement = driver.findElement(By.id("selectbox")); 
currentElement.click(); 
currentElement.sendKeys("abcd"); 

// wait for the popup to be visible 
wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("#abc"))); 

// send the TAB key while the current element has focus 
new WebDriverWait(driver, 20).until((WebDriver wd) -> { 
    currentElement.sendKeys(Keys.TAB); 
    return !wd.switchTo().activeElement().equals(currentElement); 
}); 
+0

Фокус теряется, потому что я вижу, что следующий элемент на странице выделяется, поэтому я не уверен в этом. Выполняя больше исследований, я обнаружил, что это может быть то, что мой выпадающий ящик заполняется динамически, поэтому мне нужно сначала дождаться, когда опция появится до табуляции. Это все еще не имеет смысла для меня, потому что в тот момент, когда следующий элемент становится выбранным, я вижу в раскрывающемся списке вариант, который он доступен. – Dragonfly

+0

Я просто попробовал ваш код на всякий случай, но все тот же вопрос. Он работает только в режиме DEBUG. Хорошая реализация, хотя :) – Dragonfly

+0

Не знаю, помогает ли это, но это HTML-код выпадающего списка. * Dragonfly

Смежные вопросы