“XML Http Request”是用于向服务器发送Ajax请求的协议,因此存在这样的请求表示正在进行基于Ajax的操作。
有许多浏览器插件允许您监视浏览器发送的XML Http请求。我个人使用Firefox的Firebug插件,这是一个非常有用的工具。安装完成后,Firebug会在浏览器窗口的右下角显示一个类似Bug的图标。点击类似bug的图标启动Firebug,如上图所示。选择“网络”,然后选择“XHR”来启动XHR控制台,浏览器发送的所有XML HTTP请求都将显示。
尽可能避免使用thread.sleep()。这是一段接受等待时间作为输入的代码,并在指定的时间运行秒表。
您可以将输入时间设置为30秒开始。
protected void WaitForAjaxToComplete(int timeoutSecs)
{
var stopWatch = new Stopwatch();
try
{
while (stopWatch.Elapsed.TotalSeconds < timeoutSecs)
{
var ajaxIsComplete = (bool)(WebDriver as IJavaScriptExecutor).ExecuteScript("return jQuery.active == 0");
if (ajaxIsComplete)
{
break;
}
}
}
//Exception Handling
catch (Exception ex)
{
stopWatch.Stop();
throw ex;
}
stopWatch.Stop();
}
你确定这是方法的辩论,因为它并没有帮助 – Omu 2011-06-01 14:12:58
是否Ajax调用需要超过5秒长?如果上面的代码在5秒内找不到该元素,则会引发异常。另外,ajax调用完成后,元素的爱好是否可见? WebDriver只会查找对最终用户可见的元素。 – 2011-06-01 14:22:58
@hhastekin ajax调用是即时的,它看起来好像根本不需要等待,因为可见元素是可以的,但是对于style =“display:none;”来说。元素给出了空的 – Omu 2011-06-02 06:53:21