C#- Selenium : StaleElementReferenceException on any element on any webpage after refresh or page change

标签 c# selenium selenium-chromedriver

每当我尝试使用操作移动到不在驱动程序首次加载的页面上的元素时,我都会收到 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/

相关文章:

java - 火狐未连接异常

python-3.x - ImportError : sys. meta_path 为 None,Python 可能正在关闭

c# - 在目录中找不到 ChromeDriver 和 IEDriver

java - org.openqa.selenium.remote.service.DriverService$Builder.createArgs()Lcom/google/common/collect/ImmutableList;使用 Selenium 3.5.3 Chrome 76

c# - WinSCP SFTP - .tmp 进程无法访问文件

c# - 一个 linq 语句中的 Collection<Collection<Person>> 到 Collection<Person>

c# - 缓动动画 'twitches' 完成时

c# - 如何在同一URL下托管多个.NET Core应用

c# - 如何定位具有相同跨度类的元素?

python - 如何通过 Selenium 和 Python 使用用户代理单击 youtube 评论中的链接