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

C#Selenium-引发异常:“OpenQA。硒。StaleElementReferenceException'

武骁
2023-03-14

希望有人能帮助我。我有下面的代码,我得到了抛出的异常:“OpenQA。硒。StaleElementReferenceException'

IList<IWebElement> WeekDays = Chromedriver.FindElements(By.XPath("//td[@class='dxeCalendarDay']"));

foreach (IWebElement Days in WeekDays)
{
    string WeekDaysResults = Days.Text;

    if(string.IsNullOrEmpty(WeekDaysResults))
    {
        //Do Nothing
    }
    else
    {
        if(WeekDaysResults == FirstDayOfCurrentMonth)
        {
            Days.Click();
            Debug.WriteLine("Week Days: " + WeekDaysResults);
        }        
    }
}

我在这段代码中遇到了一个异常,即:WeekDaysResults=Days。文本

错误:

OpenQA。硒。StaleElementReferenceException:“StaleElement引用:元素未附加到页面文档

我尝试了一个试抓块,但不起作用。提前感谢。

共有2个答案

车靖琪
2023-03-14

在以下两种情况中的一种情况下会引发过时元素引用异常,第一种情况比第二种情况更常见:

该元素已完全删除。元素不再附加到DOM。

参考文献:https://www.seleniumhq.org/exceptions/stale_element_reference.jsp

梁渊
2023-03-14

您可以尝试重新分配周末值,

IList<IWebElement> WeekDays = Chromedriver.FindElements(By.XPath("//td[@class='dxeCalendarDay']"));

foreach (IWebElement Days in WeekDays)
{
    string WeekDaysResults = Days.Text;

    if(string.IsNullOrEmpty(WeekDaysResults))
    {
        //Do Nothing
    }
    else
    {
        if(WeekDaysResults == FirstDayOfCurrentMonth)
        {
            Days.Click();
            Debug.WriteLine("Week Days: " + WeekDaysResults);
        }        
    } 
    WeekDays = Chromedriver.FindElements(By.XPath("//td[@class='dxeCalendarDay']"));
}
 类似资料:
  • 我试图等到元素出现后再继续,但是对于我当前使用的方法,它的抛出元素不存在,甚至在超时结束之前。 示例用法: 然后它应该等待30秒或直到元素存在,但它会立即抛出元素未找到异常...

  • 我读过一些在线文章,它们都指向一个方向,即当页面加载元素时,找不到元素。在my setData()中,您可以看到我尝试了一些方法,例如使用wait、implicitwait和第一次单击然后发送用户名。然而,一切似乎都不起作用。我还想过在pageProperties中使用“wait”,但后来改变了主意,因为这可能是一个糟糕的设计。 错误: 系统信息:Windows 10,ChromeDriver 2

  • 你可以使用raise语句 引发 异常。你还得指明错误/异常的名称和伴随异常 触发的 异常对象。你可以引发的错误或异常应该分别是一个Error或Exception类的直接或间接导出类。 如何引发异常 例13.2 如何引发异常 #!/usr/bin/python # Filename: raising.py classShortInputException(Exception):     '''A u

  • 我已经在我的pom.xml中添加了最新的硒依赖项 我用pom在目录中运行了mvn clean install。xml和我还根据Selenium文档在我的应用程序类中导入了正确的类 然而,当我尝试运行我的主方法时,我得到以下错误 我在我的~/. m2/repository文件夹中查看,我没有看到openqa文件夹,而是看到了seleniumhq文件夹。 为什么maven没有安装openqa文件夹,为

  • 我添加了&,但在运行basic程序时仍然会出现以下异常, 线程“main”java.lang.noClassDeffounder中出现异常错误:org/openqa/selenium/webdriver(名称错误:org/openqa/selenium/webdriver)在java.lang.classloader.defineClass1(本机方法)在java.lang.classloader

  • 我用的是Mac笔记本电脑,我是从youtube上得到的Mac教程,但它对其他学生也适用 原谅我,我对硒还不熟悉 导入org.openqa.selenium.webdriver;导入org.openqa.selenium.chrome.chromedriver;