我正在使用下面的代码等待 ajax 加载器完成加载
var wait = new WebDriverWait(BrowserFactory.Driver, TimeSpan.FromSeconds(60));
wait.Until(d => (bool) (d as IJavaScriptExecutor).ExecuteScript(
"return (window.jQuery != undefined) && (jQuery.active == 0)"));
但是我明白了
"Failed: OpenQA.Selenium.WebDriverTimeoutException : Timed out after 60 seconds"
最佳答案
等待加载器的最简单方法可能是等待加载器出现然后消失,而不是等待后台页面函数。您可能需要等待几个元素,但这是您提供的 HTML 中的一个。
WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(5));
By loaderLocator = By.CssSelector("img[src$='ajax-loader.gif']");
wait.Until(ExpectedConditions.ElementIsVisible(loaderLocator));
wait.Until(ExpectedConditions.InvisibilityOfElementLocated(loaderLocator));
您想等待加载器出现然后消失,因为如果脚本运行得太快(或页面运行缓慢),等待隐身可能会在加载器出现之前触发并成功。
关于c# - Webdriver 等到 Ajax 加载器完成加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51820634/