如何将Selenium WebDriver设置为在接受警报之前等待警报而不是Thread.Sleep?
作为网站,有时加载非常慢,有时加载速度很快。
谢谢
您应该应用网络驱动程序等待警报正确出现。
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