【发布时间】:2021-08-17 16:23:03
【问题描述】:
如何将 Selenium WebDriver 设置为在接受警报而不是 Thread.Sleep 之前等待警报?
作为网站,有时加载很慢或有时很快。
谢谢
【问题讨论】:
标签: c# winforms selenium-webdriver webdriver selenium-chromedriver
如何将 Selenium WebDriver 设置为在接受警报而不是 Thread.Sleep 之前等待警报?
作为网站,有时加载很慢或有时很快。
谢谢
【问题讨论】:
标签: c# winforms selenium-webdriver webdriver selenium-chromedriver
您应该应用 webdriver 等待警报正确出现。
var wait = 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));
【讨论】:
你可以使用'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
【讨论】: