当前位置: 首页 > 知识库问答 >
问题:

Selenium Web驱动程序过时引用异常

萧光华
2023-03-14

我必须点击页面上的某个按钮。但是,当我检索所有具有特定类名的元素时。当我尝试执行每个元素或单击时,所有检索到的元素都会抛出一个过时的引用异常。我不能双击任何一个。它找到了正确的元素,但抛出了所有元素的例外。注释掉的代码就是我试图选择并点击相应按钮的地方。我附上了表格的照片。请注意,每次单击或执行按钮时,页面都会发生更改。选择上传BOM按钮是您需要特别注意的。网站

 // 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个答案

史劲
2023-03-14

不要将driver.findElement(-s)与动态组件一起使用。

当您试图对已经从DOM中分离出来的元素执行操作时,会发生StaleElementRe签到异常。

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

 类似资料:
  • 问题内容: 我试图单击此页面上的元素: 在这一点上,我想单击“现金流量”,“资产负债表”或“季度”。我知道这些按钮已加载,因为我可以使用BeautifulSoup从页面源中提取它们。但是,当我尝试使用Selenium时: 全部返回“无法定位元素”,除了“季度”返回一个元素,但它位于图上方的一个元素而不是我感兴趣的表格上方的一个元素。 我认为这是由于位于错误的iframe中,而我找到了所有ifram

  • 我使用Firefox驱动程序编写了许多Selenium测试,效果很好。但由于某些原因,我现在在尝试实例化Firefox驱动程序时遇到了一个异常。有人知道Firefox的任何更新可能会影响这一点吗? 下面是两行代码。异常发生在第2行:- 以下是我得到的例外情况:- “WebDriver.dll中出现“OpenQA.Selenium.WebDriverException”类型的异常,但未在用户代码中处

  • 我正在处理以下堆栈的解决方案: ASP. NET Core .NET核心 MongoDB ...使用此驱动程序与数据库通信:https://www.nuget.org/packages/MongoDB.Driver.Core/ ...版本2.4.1 我试图像这样实例化MongoClient: 但最后一句话错误地说: “系统”类型的异常。MongoDB中出现MissingMethodExceptio

  • 问题内容: 在硒测试中出现以下错误 我所做的是 环境: Firefox v47.0 Webdriver 3.0.0-beta2 问题答案: 这是完全可以预期的。没有GeckoDriver(木偶)的发行版支持该类。这是Mozilla团队开发Marionette的首要任务之一。

  • 问题内容: 我正在使用加载。 我使用MySQL作为数据源,并且已在ODBC数据源管理器(在Windows 8中)中添加了数据源名称。 这是代码: 输出: 问题答案: 您正在使用Java 8吗?该类不再存在(更多信息)。如果需要使用Java 7,可以安装它。

  • 新的Google chrome更新会在浏览器中出现这样的信息:“您正在使用不受支持的命令行标志:--Ignore-Certifice-Errors。稳定性和安全性将受到影响。” 根据我在selenium bug报告中读到的内容,临时解决方案是启动webdriver