【发布时间】:2014-08-11 14:22:12
【问题描述】:
我要测试当调用 Ajax 时会返回 Not Found,会显示警报。
警报的可见性由“ng-show”属性控制。所以FindElement(By.Id()) 应该已经找到了那个元素。我想等待警报可见。
protected IWebElement WaitForElement(string elementId)
{
var wait = new WebDriverWait(Host.TestWebDriver, TimeSpan.FromMinutes(2));
return wait.Until(driver =>
{
var el = driver.FindElement(By.Id(elementId));
if (el==null || !el.Displayed)
{
return null; // continue to wait if the element is not visible.
}
return el;
});
}
我预计WebDriverWait 将等待 2 分钟,直到显示警报消息。但似乎我的 Ajax 调用从未返回错误,因此显示警报消息的 JavaScript 代码从未到达过。
我应该怎么做才能让我的 Ajax 在等待时完成?
更新:
稍微修改了上面的WaitForElement:
protected IWebElement WaitForElement(string elementId)
{
var wait = new WebDriverWait(Host.TestWebDriver, TimeSpan.FromMinutes(2));
try
{
var el = wait.Until(ExpectedConditions.ElementIsVisible(By.Id(elementId)));
return el;
}
catch (WebDriverTimeoutException ex)
{
// no element
return null;
}
}
仍然无法让它工作。
【问题讨论】:
标签: javascript ajax selenium