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

元素不再附加到DOM命令duration或timeout:21毫秒,当它退出循环时

麻华辉
2023-03-14
    null

下载new month Oct month data以csv格式下载的Exception线程“main”org.openqa.selenium.staleElementReferenceException:Element不再附加到DOM命令持续时间或超时时间:21毫秒有关此错误的文档,请访问:http://seleniumhq.org/exceptions/stale_element_reference.html构建信息:版本:'2.48.2',修订:'41BCCDD',时间:'2015-10-09 19:59:12'系统信息:主机:'treselle',IP:'192.168.0.123',OS.name:'Windows 0_60'会话ID:ecbdefce-d119-43cc-b239-124d9961bf7e驱动程序信息:org.openqa.selenium.firefox.FirefoxDriver功能[{platform=windows,acceptslcerts=true,javascriptenabled=true,csssselectorsenabled=true,databaseenabled=true,databaseenabled=true,browsername=firefox,handlesalerts=true,nativeevents=false,在sun.reflect.nativeconstructoraccessorimpl.newinstance(nativeconstructoraccessorimpl.java:57)在sun.reflect.delegingconstructoraccessorimpl.newinstance(delegatingconstructoraccessorimpl.java:45)在java.lang.reflect.constructor.newinstance(structor.java:526)在org.openqa.selenium.remote.errorhandler.createthrowable(remoteWebDriver.execute(remoteWebDriver.java:647)在org.openqa.selenium.remote.remoteWebelement.execute(remoteWebelement.java:326)在org.openqa.selenium.remote.remoteWebelement.gettext(remoteWebelement.java:178)在stack3.main(stack3.java:43)在:org.openqa.selenium.staleElementReferenceException:Element不再附加到DOM。有关此错误的文档.48.2',修订:'41BCCDD',时间:'2015-10-09 19:59:12'系统信息:host:'treselle',IP:'192.168.0.123',os.name:'Windows 7',os.arch:'amd64',os.version:'6.1',java.version:'1.7.0_60'驱动程序信息:Driver.version:'munknown at.fxdriver.cache.getelementat(资源://fxdriver/modules/web-element-cache.js:9354)at.utils.getelementat(文件1317345WebDriver-profile/extensions/fxdriver@googlecode.com/components/command-processor.js:8978)at.webelement.getelementtext(文件:///c://users/ashik/appdatations/appdata/local/temp/anmonyous7980863778031317345WebDriver-profile/extendations/fxdriver@googlecode.com/components/components/anmonyous:11965)at.ver@googlecode.com/components/command-processor.js:12534)at.delayedcommand.prototype.executeinternal_(file://c://users/ashik/appdata/local/temp/anonymous7980863778031317345WebDriver-profile/extensions/fxdriver@googlecode.com/components/command-processor.js:12539)at.delayedcommandd.prototype.execute/<(文件:///c://users/ashik/appdata/local/temp/anonymous7980863778031317345WebDriver-profile/extensions/fxdriver@googlecode.com/components/command-processor.js:12481)

driver.get("http://www.depreportingservices.state.pa.us/ReportServer/Pages/ReportViewer.aspx?%2fOil_Gas%2fOil_Gas_Well_Historical_Production_Report");
driver.manage().window().maximize();

WebElement select = driver.findElement(By.id("ReportViewerControl_ctl04_ctl03_ddValue"));
List < WebElement > options = select.findElements(By.tagName("option"));

for (WebElement option: options) {
    if (option.getText().equals("Sep 2015 (Unconventional wells)")) {
        System.out.println("old month");
        break;
    } else {
        if (option.getText().contains("Oct")) {
            System.out.println("Download new month");
            WebElement identifier = driver.findElement(By.xpath(".//*
[@id='ReportViewerControl_ctl04_ctl03_ddValue']"));

            Select select1 = new Select(identifier);
            select1.selectByVisibleText("Oct 2015 (Unconventional wells)");

            Wait(20000);
            driver.findElement(By.xpath(".//*[@id='ReportViewerControl_ctl04_ctl00']")).click();

            Wait(20000);
            driver.findElement(By.xpath(".//*[@id='ReportViewerControl_ctl05_ctl04_ctl00_Button']/tbody/tr/td/*")).click();

            Wait(20000);
            driver.findElement(By.xpath(".//*[@id='ReportViewerControl_ctl05_ctl04_ctl00_Menu']/div[2]/a")).click();

            Wait(10000);
            System.out.println("Oct month data downloaded in csv format");
        }

共有1个答案

於功
2023-03-14

在循环中最后一次调用后再次初始化。

select = driver.findElement(By.id("ReportViewerControl_ctl04_ctl03_ddValue"));
options = select.findElements(By.tagName("option"));

或者你可以在一排里做

options = driver.findElement(By.id("ReportViewerControl_ctl04_ctl03_ddValue")).findElements(By.tagName("option"));

在您的代码中,它应该如下所示:

driver.get("http://www.depreportingservices.state.pa.us/ReportServer/Pages/ReportViewer.aspx?%2fOil_Gas%2fOil_Gas_Well_Historical_Production_Report");
driver.manage().window().maximize();

WebElement select = driver.findElement(By.id("ReportViewerControl_ctl04_ctl03_ddValue"));
List < WebElement > options = select.findElements(By.tagName("option"));

for (WebElement option: options) {
    if (option.getText().equals("Sep 2015 (Unconventional wells)")) {
        System.out.println("old month");
        break;
    } else {
        if (option.getText().contains("Oct")) {
            System.out.println("Download new month");
            WebElement identifier = driver.findElement(By.xpath(".//*
[@id='ReportViewerControl_ctl04_ctl03_ddValue']"));

            Select select1 = new Select(identifier);
            select1.selectByVisibleText("Oct 2015 (Unconventional wells)");

            Wait(20000);
            driver.findElement(By.xpath(".//*[@id='ReportViewerControl_ctl04_ctl00']")).click();

            Wait(20000);
            driver.findElement(By.xpath(".//*[@id='ReportViewerControl_ctl05_ctl04_ctl00_Button']/tbody/tr/td/*")).click();

            Wait(20000);
            driver.findElement(By.xpath(".//*[@id='ReportViewerControl_ctl05_ctl04_ctl00_Menu']/div[2]/a")).click();

            Wait(10000);
            System.out.println("Oct month data downloaded in csv format");

            options = driver.findElement(By.id("ReportViewerControl_ctl04_ctl03_ddValue")).findElements(By.tagName("option"));
        }
}
 类似资料:
  • 线程“main”org.openqa.selenium.StaleElementReferenceException中的异常:stale的元素引用:该元素不再附加到DOM或页面已刷新

  • 我对自动化测试完全陌生。在参考了一些教程之后,我创建了一个自动测试用例。我尝试自动化的测试用例是在单击表的一个标题后检查排序是否正常工作。 我的自动测试用例失败,出现以下异常: 以下是代码: 例外情况来自此行: 有人能告诉我isse的原因以及如何解决吗? 非常感谢您的帮助

  • 我有一个网页,其中包含一些JavaScript并执行一些Ajax调用。当尝试使用Selenium测试它时,我随机得到“PHPUnit_Extensions_Selenium2TestCase_WebDriverException:Element不再附加到DOM”消息,可能是5次运行中的一次。 现在我意识到了Ajax调用和测试引擎之间的竞争问题,我已经采取了措施来保护它,但仍然存在一些问题。我的场景

  • 我正在使用硒网络驱动程序,其中我正在尝试拖放表格的一列。但是一旦我拖放该列,我就得到一个错误“元素不再附加到DOM”。下面是我用于拖放元素的代码

  • 我正在使用PageObject/PageFactory设计模式来实现UI自动化。使用Selenium2.0WebDriver.JAVA,我随机得到错误:org.openqa.Selenium。StaleElementReferenceException:当我尝试以下逻辑时,元素不再附加到DOM: 错误随机发生在if语句行,正如您所看到的,我已经尝试了一些方法来避免这种情况,比如睡眠少量时间,或者再

  • 我有一个try-catch块,它检查来自Scanner的输入是否为int。但它只是一次又一次地循环询问要发送多少人。。然后说错误:不是一个数字。没有实际提示用户输入不同的数字。 输入int以外的内容时的输出示例。