protected SelectElement GetSelectElement(By selector)
{
new WebDriverWait(driver, TimeSpan.FromSeconds(30)).Until(c =>
{
try
{
new SelectElement(driver.FindElement(selector));
return true;
}
catch (StaleElementReferenceException)
{
return false;
}
});
return new SelectElement(driver.FindElement(selector));
}
即使使用这个函数,我仍然会在返回行上获得陈旧元素,不知道还有什么可以避免陈旧元素。
答案 0 :(得分:1)
看起来你正在进行boolean
检查,但在返回SelectElement
时却没有使用它。结果,return new SelectElement(driver.FindElement(selector));
抛弃了StaleElementException
而没有照顾你之前所做的事情。
protected SelectElement GetSelectElement(By selector)
{
bool flag = new WebDriverWait(Driver, TimeSpan.FromSeconds(30)).Until(c =>
{
try
{
new SelectElement(Driver.FindElement(selector));
return true;
}
catch (StaleElementReferenceException)
{
return false;
}
});
if (flag)
{
return new SelectElement(Driver.FindElement(selector));
}
else
{
//something
}
return null;
}