Подождите, пока элемент в webdriver - PullRequest
1 голос
/ 07 октября 2011

Я следовал тому, что было написано здесь: API WebDriver Selenium: ElementNotFoundErrorException, когда Element явно присутствует!

Мой код выглядит так:

    Function<WebDriver, WebElement> presenceOfElementLocated(final By locator) {
    return new Function<WebDriver, WebElement>() {
        public WebElement apply(WebDriver driver) {
            return driver.findElement(locator);
          }
       };
    }

   ....... 

   driver.get(baseUrl);

   WebDriverWait wait = new WebDriverWait(driver, 10);
   wait.until(presenceOfElementLocated(By.className("classname")));
   findByClassAndName(driver, "x-tree3-node-text", "Name1").click();

Проблема в том,это, кажется, ничего не делает.Это не работает, и я даже не вижу ни малейшего следа ожидания веб-страницы с графическим интерфейсом.я получил то же самое с неявным ожиданием через тайм-ауты ... Кто-нибудь может помочь?

Ответы [ 2 ]

1 голос
/ 21 октября 2011

Вы должны поймать Throwables , выброшенные из ExpectedCondition или вашей функции (для этого подходят методы apply ()) и вернуть ноль, так что Wait.until () продолжает для запуска - подробный пример см. http://rostislav -matl.blogspot.com / 2011/05 / переход на селен-2-на-webdriver-part.html .

1 голос
/ 07 октября 2011

Создать функцию следующим образом:

public void Wait (string element)          // Wait function to wait for element
        { 
            for (int second = 0; ; second++)
                {
                    if (second >= 60) Assert.Fail("timeout");
                    try
                    {
                        if (IsElementPresent(By.LinkText(element))) break;
                    }
                    catch (Exception)
                    { }
                    Thread.Sleep(1000);
                 }  
        }

и теперь вызывайте эту функцию там, где вы хотите дождаться элемента следующим образом:

string element="<element name>";
        Wait(element);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...