‘waitForPageToLoad’ /’waitForElementPresent’ — как использовать в Selenium2? (C #)

#c# #selenium-webdriver

#c# #selenium-webdriver

Вопрос:

Ребята, у меня проблема с состоянием waitForPageToLoad. Я использую C # с Nunit, и я не знаю точно, что мне следует использовать вместо ‘waitForPageToLoad’ / ‘waitForElementPresent’. Может быть, кто-нибудь знает, как я могу использовать ‘waitForPageToLoad’ / ‘waitForElementPresent’ в Selenium 2?

Ответ №1:

Я использую findElement() для чего-то на новой странице. Завершите в цикле, который будет продолжать попытки, пока элемент не будет найден, с максимальным ожиданием.

 // pseudocode WebElement wait_for_element(By locator)
while (!timeout) {
  try {
    return driver.FindElement(locator);
  } catch (Exception) {
    Thread.sleep(1000);
  }
  // check for timeout here
}
throw new NoSuchElementException("Timeout waiting for " locator);
  

Комментарии:

1. Привет, Рэндалл, спасибо за ответ, это именно то, что я могу использовать!

Ответ №2:

 ISelenium selenium = new DefaultSelenium( "localhost", 4444, "*chrome", "
    http://localhost/UrlOfAppToTest/" );
selenium.WaitForPageToLoad( "30000" );
  

Это то, что вы ищете?

Комментарии:

1. Привет, Чарли — не совсем: ниже вы можете найти мой код: driver.Navigate().GoToUrl(» skyscanner.net?ncr=1″ ); IWebElement query = драйвер. findElement(By.Id («country_selection_box»)); query.Click(); переменная country = драйвер. findElement( С помощью.cssSelector(«html body.lang-pl div#пользовательская_панель_popup div.bd div.content select»)); country.SendKeys («Великобритания»); country.Click(); страна. Очистить();

2. Нитки. Sleep(TimeSpan.FromSeconds(10)); // Эта строка в настоящее время является моим таймаутом, проблема в том, что скрипт всегда ожидает 10 секунд, в selenium 1 у меня было что-то вроде, например, selenium.waitForPageToLoad(«3000»). Спасибо, что скрипт был более «интеллектуальным» — ждал, когда страница была полностью загружена (иногда это занимало 3 секунды, в другой раз 9 секунд). Я нашел одно решение в группах Google: code.google.com/p/selenium/issues/detail?id=549 но здесь я должен создать свой собственный класс.

3. Я надеюсь, что теперь мой вопрос более ясен. Однако, вы используете одну интересную вещь, я думаю об ISelenium — в какой библиотеке я могу это найти? //выбор языка IWebElement jezyk = драйвер. findElement(By.Id («Продающий язык»)); jezyk.Click(); var specificLanguage = драйвер. findElement(

4. С помощью.cssSelector( «html body.lang-pl div#skyscanner-doc.yui-t-skyscanner div#hd div#hd_personalization div.language выберите#параметр selLanguage»)); specificLanguage. SendKeys(«Английский»); specificLanguage.Click(); Определенный язык. Очистить();

Ответ №3:

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

Смотрите ссылку для получения более подробной информации: Selenium HQ, явное ожидание