我正在使用visual studio进行自动化测试。获取内部元素值时,它显示此错误。
它不会一直显示此错误,但有时会成功测试。
发生了OpenQA.Selenium.StaleElementReferenceException 的HResult = 0x80131500 Message =陈旧元素引用:元素未附加到页面文档
我试图解决这个问题,但不幸的是我没有得到任何积极的结果。
以下是我的代码:
public List<CaseListEntry> GetCaseListEntries()
{
var CaseGridTrs = CaseListGrid.FindElements(By.XPath(".//tr"));
var entryList = CaseGridTrs.Select(x =>
{
var CaseEntryTds = x.FindElements(By.XPath(".//td"));
var RegisterDate = CaseEntryTds.ElementAt(1).Text;
var RegisterNo = CaseEntryTds.ElementAt(3).Text;
return new CaseListEntry
{
ListNo = CaseEntryTds.ElementAt(0).FindElement(By.XPath(".//a")).Text,
RegDate = DateTime.ParseExact(RegisterDate, "dd.MM.yyyy",
CultureInfo.InvariantCulture),
DocumentType = CaseEntryTds.ElementAt(2).Text,
};
}).ToList();
return entryList;
}
我在第8行遇到这个陈旧的异常错误。我也尝试使用 webdriver.wait 它仍然显示相同的错误。
我也尝试等待页面加载
var customWait = new WebDriverWait(new SystemClock(), driver, TimeSpan.FromSeconds(5), TimeSpan.FromMilliseconds(1));
//ignore the timeout exception
try
{
customWait.Until(CustomExpectedCond.ElementHasClass(LoadingIndicator, "t-icon t-refresh t-loading"));
customWait.Until(CustomExpectedCond.ElementHasClass(LoadingIndicator, "t-icon t-refresh"));
}
catch (WebDriverTimeoutException) { /*ignore and hope for the best*/ }
}
答案 0 :(得分:0)
你可以这样做:
return Observable.interval(30000).startWith(0).flatMap(()=>{
return this.http.get(someUrl).timeout(3000)
.map(this.extractData)
.catch(this.handleError);
});
}