gpt4 book ai didi

c# - 如何让 selenium 等待基于 XMLHttpRequest 的请求的 ajax 响应

转载 作者:太空宇宙 更新时间:2023-11-03 14:57:57 28 4
gpt4 key购买 nike

我正在使用 Selenium WebDriver 和 FirefoxDriver 来自动化一个旧网站。该网站是使用纯 JavaScript 构建的。它使用 XMLHttpRequest 来执行 Ajax 请求。我想编写一个函数 WaitForAjax() 来等待 Ajax 请求完成。目前,我正在使用 Explicit Wait (Thread.Sleep) 来完成它。谁能帮我用隐式等待完成同样的事情?

protected void WaitForAjax() {
/*
while (true) {
var ajaxIsComplete = (bool)(_driver as IJavaScriptExecutor).ExecuteScript("return jQuery.active == 0");
if (ajaxIsComplete)
break;
}
*/

//I am using Explicit Waits of 3 second.
Thread.Sleep(TimeSpan.FromSeconds(3));
}

最佳答案

除非没有别的事可做,否则永远不要使用 Thread.sleep()。在大多数情况下,有事可做 :)您可以尝试这样的脚本:

public void waitForAjax() {
ExpectedCondition<Boolean> pageLoadCondition = driver -> "complete".equals(((JavascriptExecutor) driver).executeScript("return document.readyState"));
WebDriverWait wait = new WebDriverWait(webDriver, 30);
wait.until(pageLoadCondition);
}

关于c# - 如何让 selenium 等待基于 XMLHttpRequest 的请求的 ajax 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47978953/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com