C# - Selenium:刷新或页面更改后任何网页上任何元素的StaleElementReferenceException

时间:2017-07-05 07:02:39

标签: c# selenium selenium-chromedriver

每当我尝试使用Actions移动到不在首次加载驱动程序的页面上的元素时,我得到StaleElementReferenceException(元素未附加到页面文档);但是,该元素显示在DOM和页面源中。我使用Selenium和ChromeDriver版本2.30。我也试过在无头模式下运行Chome。我还试图将二进制文件切换到Chrome测试版和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循环中;它仍然永远不会得到元素。任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

创建一个新的Actions对象。它们显然是针对特定页面的,所以旧版本在导航后停止工作。

builder = new Actions(driver);