Selenium Web驱动程序陈旧参考例外

时间:2017-09-01 19:16:04

标签: c# selenium selenium-webdriver selenium-chromedriver

我必须点击页面上的某个按钮。但是,当我检索具有特定类名的所有元素时。当我尝试执行每个元素或单击时,所有检索到的元素都会抛出过时的引用异常。我无法双击其中任何一个。它找到了正确的元素,但抛出了所有这些元素的异常。注释掉的代码是我实际尝试选择并单击相应按钮的地方。我附上了表格的图片。请注意,每次单击或执行按钮时都会更改页面。选择上载BOM按钮是您需要特别注意的。 Website

 // Switch to correct frame
        IWebElement editorFrame = driver.FindElement(By.ClassName("frame-banner"));
        driver.SwitchTo().Frame(editorFrame);
        var action = new OpenQA.Selenium.Interactions.Actions(driver);
        // Select Project File 
        IList<IWebElement> projectFileButtonList= driver.FindElements(By.ClassName("data-cell"));
        foreach (var button in projectFileButtonList)
        {
            if (button.Text == "BOM_scrub")
            {
                // Found Project File now select it
                action.DoubleClick(button);
                action.Perform();
                break;
            }
        }
        // Select Upload BOM Button
        IList<IWebElement> uploadBomBtn = driver.FindElements(By.ClassName("se-custom-main-button"));
        foreach (var element in uploadBomBtn )
        {
            try
            {
                action.DoubleClick(element);
                action.Perform();
            }
            catch
            {

            }
            /*
            if (element.Text == "Upload BOM")
            {
                int i = 0;
                while (i == 0)
                {
                    try
                    {
                        action.DoubleClick(element);
                        action.Perform();
                        break;
                    }
                    catch
                    {

                    }
                }

            }
            */
        }

1 个答案:

答案 0 :(得分:0)

请勿将These tags are in checkpoints/1504359209.469093: audio - histograms - images - scalars - tensor - 与动态组件一起使用。

driver.findElement(-s)发生,因为您正在尝试对已经从DOM分离的元素执行操作。

您必须使用显式等待机制(StaleElementReferenceException + WebDriverWait的组合),它会自动刷新元素的状态,并在满足指定条件时返回其有效表示。