等待时StaleElementReferenceException

时间:2015-09-29 13:25:30

标签: c# exception selenium selenium-webdriver wait

我的测试中有wait,如下所示:

WebDriverWait wait = new WebDriverWait(dr, TimeSpan.FromSeconds(30));

...

wait.Until((d) =>
{
   if (d.FindElement(By.XPath("//*[@src='/loader.gif']")).Displayed)
   {
       System.Threading.Thread.Sleep(200);
       return false;
   }
   else
   {
       return true;
   }
});

我有时得到StaleElementReferenceException。它在95%的时间内工作,并且在测试的不同地方失败。

错误:

  

消息:OpenQA.Selenium.StaleElementReferenceException:元素不是   在缓存中找到 - 也许页面自查看以来已经发生了变化   达

1 个答案:

答案 0 :(得分:0)

我建议您尝试使用ExpectedConditions并查看是否有帮助。

WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(30));
IWebElement loaderGif = wait.Until(ExpectedConditions.ElementIsVisible(By.XPath("//*[@src='/loader.gif']")));