2014-09-10 3 views
0

Я пытаюсь ждать элемента, чтобы быть видимыми, так что я бы установить неявное ожидание в методе ниже:неявные ожидания не работает в селеном WebDriver

public boolean isDisplayed(String xpathElement,int timeOut) { 
    boolean found = true; 

    try { 
     driver.manage().timeouts().implicitlyWait(timeOut , TimeUnit.SECONDS); 
     driver.findElement(By.xpath(xpathElement)).isDisplayed(); 

    } catch(NoSuchElementException e) { 
     driver.manage().timeouts().implicitlyWait(0, TimeUnit.SECONDS); 
     found = false; 
    } 
    driver.manage().timeouts().implicitlyWait(0, TimeUnit.SECONDS); 
    return found; 
} 

я свести на нет неявного ждать, потому что я использую webDriverWait, и я не хочу иметь проблемы, но isDisplayed() показывает, что элемент все еще не отображается, и он показывает, что тайм-аут составляет 0 секунд, а не таймаут, который был передан в методе.

+0

Есть ли причина, по которой вы решили не использовать функциональность «явного ожидания», которая может соответствовать вашей цели? –

+0

Привет, Марк, спасибо за ваш комментарий, что я хочу, чтобы этот метод был доступен через весь мой проект и не зависел от конкретного тестового примера, но вы правы, я действительно могу использовать явное ожидание «elemenetToBeClicable», я решаю проблему –

ответ

0

Проблема на самом деле была связана с видимостью элемента, по какой-то причине элемент не был виден.

0

Похоже, вы ошиблись при использовании .isDisplayed(). Вы, должно быть, использовали selenium webdriver's isDisplayed(), и ваш код показывает, что вы очень хотите использовать тайм-аут в 0 секунд. Таким образом, это может быть причина, по которой вы видите 0 сек в журнале выполнения.

Рекомендация: Измените имя метода и используйте его снова.

+0

Привет, спасибо за ваш комментарий, я фактически использую собственный метод isDisplay(), а неявный wait установлен на 0 после того, как элемент не отображается и после того, как элемент виден, поэтому он не должно быть проблемой. –

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