2012-05-09 1 views
1

Я использую WebDriver (Eclipse -Java) для автоматизации страницы регистрации. При нажатии кнопки «Регистрация» отображается сообщение «Успешное сообщение» и его необходимо проверить.Подождите, пока не работает в браузере Firefox (Webdriver selenium 2.0 + Java)

Я могу сделать это успешно в IE8. Но не в состоянии проверить то же самое в Firefox. Я пробовал разные ожидания 1. d1.manage(). Timeouts(). ImplicitlyWait (60, TimeUnit.SECONDS);

  1. WebDriverWait wait = new WebDriverWait (driver, 10); wait.withTimeout (30, TimeUnit.SECONDS); wait.until (ExpectedConditions.visibilityOfElementLocated (By.id ("ElmId"));

  2. Дождитесь ожидания = новый FluentWait ожидание = новый FluentWait (d1) .withTimeout (60, СЕК); wait.until (новый Функция() wait.until (ExpectedConditions.visibilityOf (d1.findElement (By.id ("elementid"))));

кто-нибудь сталкивался с подобными проблемами Любое решение

ответ

0

Может быть, вы? можно попробовать с другими типами условий? Или вы также можете попробовать написать свой собственный, переопределив метод применения. d несколько случаев при использовании предоставленных условий было недостаточно. Только после использования моей собственной версии метода apply она была успешной.

Wait<WebDriver> wait = new FluentWait<WebDriver>(driver).withTimeout(timeoutInSeconds, TimeUnit.SECONDS) 
     .pollingEvery(pollingInterval, 
      TimeUnit.MILLISECONDS); 
    return wait.until(new ExpectedCondition<WebElement>() { 

     @Override 
     public WebElement apply(WebDriver arg0) { 
      List<WebElement> findElements = driver.findElements(By.className(someClassName)); 
      for (WebElement webElement : findElements) { 
       if (webElement.getText().equals(string)) { 
        return webElement; 
       } 
      } 
      return null; 
     } 
    }); 

e. г. что-то вроде этого было очень полезно несколько раз.

0

Это сообщение об успешном завершении после нажатия кнопки: отображается ли оно с помощью ajax/javascript или вы перезагружаете страницу?

Если вы делаете это с помощью js, иногда бывает невозможно проверить сообщение командой WebDriver, и вам также нужно будет использовать js для проверки. Что-то вроде:

Object successMessage = null; 
int counter = 0; 

    while ((successMessage == null) && counter < 5) 
    { 
     try 
     { 
      ((JavascriptExecutor)driver).executeScript("return document.getElementById('yourId')"); 
     } 
     catch (Exception e) 
     { 
      counter +=1; 
     } 
    } 

    if (successMessage != null) //would be better to use some assertion instead of conditional statement 
    { 
     //OK 
    } 
    else 
    { 
     //throw exception 
    } 

Цикл while является уродливым способом для функции псевдо-ожидания. Вы также можете удалить его, если вам не нужно ждать элемента.

В качестве альтернативы может быть

Object result = ((JavascriptExecutor)driver).executeScript("return document.body.innerHtml"); 
String html = result.toString(); 

, а затем разбора HTML вручную.

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