首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >等待使用Selenium 2 WebDriver完成Ajax调用

等待使用Selenium 2 WebDriver完成Ajax调用
EN

Stack Overflow用户
提问于 2011-06-01 20:52:08
回答 9查看 90.1K关注 0票数 56

我正在使用Selenium 2 WebDriver测试使用AJAX的UI。

有没有办法让驱动程序等待Ajax请求完成一段时间。

基本上我有这样的想法:

d.FindElement(By.XPath("//div[8]/div[3]/div/button")).Click();
// This click trigger an ajax request which will fill the below ID with content.
// So I need to make it wait for a bit.

Assert.IsNotEmpty(d.FindElement(By.Id("Hobbies")).Text);
EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2011-06-01 21:35:44

var wait = new WebDriverWait(d, TimeSpan.FromSeconds(5));
var element = wait.Until(driver => driver.FindElement(By.Id("Hobbies")));
票数 18
EN

Stack Overflow用户

发布于 2011-08-26 19:12:09

如果对ajax请求使用jQuery,可以等到jQuery.active属性为零。其他库可能有类似的选项。

public void WaitForAjax()
{
    while (true) // Handle timeout somewhere
    {
        var ajaxIsComplete = (bool)(driver as IJavaScriptExecutor).ExecuteScript("return jQuery.active == 0");
        if (ajaxIsComplete)
            break;
        Thread.Sleep(100);
    }
}
票数 81
EN

Stack Overflow用户

发布于 2013-04-03 23:15:37

您还可以在这里使用Selenium显式等待。这样你就不需要自己处理超时了

public void WaitForAjax()
{
    var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(15));
    wait.Until(d => (bool)(d as IJavaScriptExecutor).ExecuteScript("return jQuery.active == 0"));
}
票数 43
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6201425

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档