每当我尝试使用操作移动到不在驱动程序首次加载的页面上的元素时,我都会收到 StaleElementReferenceException(元素未附加到页面文档);但是,该元素同时出现在 DOM 和页面源代码中。我将 Selenium 与 ChromeDriver 版本 2.30 一起使用。我也试过在 headless 模式下运行 Chome。我还尝试将二进制文件切换到 Chrome beta 和 Chrome Canary。
WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(30));
wait.Until(d =>
{
try
{
IWebElement e = driver.FindElementById(ID);
builder.MoveToElement(e).Build().Perform();
builder.Click().Build().Perform();
return true;
}
catch { }
return false;
});
它多次尝试找到该元素,但始终找不到;它卡在 MoveToElement 上并返回异常。如您所见,我已经尝试将整个事情包装在一个 try/catch 循环中;它仍然没有得到元素。任何帮助将不胜感激!
最佳答案
创建一个新的 Actions
对象。它们显然是特定于页面的,因此旧的在导航后停止工作。
builder = new Actions(driver);
关于C#- Selenium : StaleElementReferenceException on any element on any webpage after refresh or page change,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44919110/