验证是否显示“Ajax Loading”图像

时间:2014-09-04 08:40:01

标签: c# ajax selenium selenium-webdriver

我有2个名为dd1和dd2的下拉列表。

dd1用于国家,dd2用于国家。

点击dd1后,会发生ajax调用(并显示' loading'图像)并填充dd2。

有没有办法确定' loading'单击dd1后显示图像?

所以测试用例就是这样。 1.转到页面 2.选择' USA'在dd1     - 如果加载图像可见,则置位     - 如果加载图像消失则断言 3.选择' Texas'

我对第二步的断言感到震惊

3 个答案:

答案 0 :(得分:0)

将您的加载图片放在span或div中,并为其指定ID。 更改dd1后,进行Ajax调用并显示它 任何时候你想知道装箱是否在那里,试着 检查可见性

$("logoContainer").is(":visible")

答案 1 :(得分:0)

我创建了一个驱动程序覆盖,所以现在我调用 driver.WaitForPageLoad(); 并等待直到微调器消失并加载文档就绪状态。更多细节可以在示例链接中看到,但是这里是你如何覆盖并等待微调器消失(假设微调器有一个你可以搜索的类。

Example

public static bool WaitForPageLoad(this IWebDriver driver)
{
    WaitForDocumentReady(driver);
    bool ajaxReady = WaitForAjaxReady(driver);
    WaitForDocumentReady(driver);

    return ajaxReady;
}

private static bool WaitForAjaxReady(IWebDriver driver)
{
    Thread.Sleep(1000);
    WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(30));
    return wait.Until<bool>((d) =>
    {
        return driver.FindElements(By.CssSelector(".waiting, .tb-loading")).Count == 0;
    });
}

答案 2 :(得分:0)

这对我有用

wait.Until(driver =&gt;!driver.FindElement(By.Id(“ControlId”)。显示);