我特别询问我的try/catch
块可能存在什么问题,这在与此“重复”链接的问题中没有描述。
我遇到了一个问题,我试图捕获 aStaleElementReferenceException
然后再次查找元素,但由于某种原因,异常没有被捕获。我有下面的方法,当我运行测试时,我得到一个StaleElementReferenceException
当这条线被执行时,value = element.GetAttribute(attributeName);
. 我假设(可能很糟糕)在 a 中添加检查try/catch
并专门寻找异常将允许我继续尝试,直到 selenium 能够再次找到该元素。问题是由于某种原因异常没有被捕获并且测试立即退出。奇怪的是,如果我将 catch 块更改为只捕获一般Exception
情况,它就可以正常工作。我对此担心的是,尽管我可能会陷入永远不会退出的循环。我正在使用页面对象模型来初始初始化元素。
bool isStale = false;
string value = "";
do
{
try
{
value = element.GetAttribute(attributeName);
isStale = false;
}
catch (StaleElementReferenceException)
{
element = driver.FindElement(By.XPath(xPath));
isStale = true;
}
} while (isStale == true);
return value;
这是堆栈跟踪的一部分:
测试失败并出现错误:System.Reflection.TargetInvocationException:调用目标已引发异常。---> OpenQA.Selenium.StaleElementReferenceException: stale element reference: element is not attach to the page document (Session info: chrome=71.0.3578.98) (Driver info: chromedriver=2.43.600210 (68dcf5eebde37173d4027fa8635e332711d2874a),platform=Windows NT 10.0 .17134 x86_64) 在 OpenQA.Selenium.Remote.RemoteWebDriver.UnpackAndThrowOnError(Response errorResponse) 在 OpenQA.Selenium.Remote.RemoteWebDriver.Execute(String driverCommandToExecute, Dictionary
2 parameters) at OpenQA.Selenium.Remote.RemoteWebElement.Execute(String commandToExecute, Dictionary
2 parameters) 在 OpenQA.Selenium.Remote.RemoteWebElement.GetAttribute(String attributeName)