Как ждать оповещения в Selenium WebDriver с C#? - PullRequest
0 голосов
/ 12 февраля 2020

Как настроить Selenium WebDriver на Ожидание оповещения, прежде чем принимать его вместо Thread.Sleep?

Как веб-сайт, иногда загружается очень медленно или иногда быстро.

Спасибо

Ответы [ 2 ]

1 голос
/ 12 февраля 2020

Вы должны подать веб-драйверу сообщение о том, что оповещение будет правильно отображено.

 new WebDriverWait(driver, TimeSpan.FromSeconds(15));
        wait.Until(SeleniumExtras.WaitHelpers.ExpectedConditions.AlertIsPresent());

ИЛИ напишите логическую функцию для проверки наличия оповещения и используйте ее для ожидания

bool IsAlertShown(WebDriver driver) {
  try {
    driver.SwitchTo().Alert();
  } catch(NoAlertPresentException e) {
    return false;
  }
  return true;
}

Используйте, как показано ниже

var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(20));
wait.Until(driver => IsAlertShown(driver));
0 голосов
/ 12 февраля 2020

Вы можете использовать «WebDriverWait»

IWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(3))
IWebElement element = wait.Until(driver => driver.FindElement(By.Name("q")));

https://selenium.dev/selenium/docs/api/dotnet/html/T_OpenQA_Selenium_Support_UI_WebDriverWait.htm

...