微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Selenium:切换到下一个文档以读取 excel 时出现“StaleElementReferenceException”

如何解决Selenium:切换到下一个文档以读取 excel 时出现“StaleElementReferenceException”

必须处理多个文档,以验证文本框中的所有输入是否正确。为此,我从 Excel 工作表中获取数据,并且必须将数据与文本框中的数据进行比较。 当我切换到下一个文档时能够将它与第一个文档进行比较我得到 org.openqa.selenium.StaleElementReferenceException: stale element reference: element is not attached to the page document. 它不是从第二个文档文本框中读取数据。

@Test(priority=4,dataProvider="getTestData")
public void excelUpload(String relatie,String date,String amount,String reknum,String BTW,String btwled,String totaldiff,String btwdiffamt,String bankaccnum) throws Exception {
    
    ocrupload.nextInvoice();
    
    Thread.sleep(5000);
    
    SoftAssert softAssert = new SoftAssert();
    
    String text = ocrupload.relatie();
    
    softAssert.assertEquals(text,relatie);
    
    String dat = ocrupload.datum();
    
    softAssert.assertEquals(dat,date);
    
    String totamt = ocrupload.txttotal();
    
    softAssert.assertEquals(totamt,amount);

    String reknumber = ocrupload.bankaccnumber();
    
    softAssert.assertEquals(reknumber,reknum);
    
    String btwNum = ocrupload.btwNumber();
    
    softAssert.assertEquals(btwNum,BTW);
    
    String btwledger = ocrupload.btwledger();
    
    softAssert.assertEquals(btwledger,btwled);
    
    String btwtotamount = ocrupload.btwtotal();
    
    softAssert.assertEquals(btwtotamount,totaldiff);
    
    String totaldifferance = ocrupload.btwDiffamt();
    
    softAssert.assertEquals(totaldifferance,btwdiffamt);

     softAssert.assertAll();








@DataProvider
public Object[][] getTestData(String sheetName) throws InvalidFormatException {
    FileInputStream file = null;
    try {
        file = new FileInputStream(TESTDATA_SHEET_PATH);
    } catch (FileNotFoundException e) {
        e.printstacktrace();
    }
    try {
        book = WorkbookFactory.create(file);
    } catch (IOException e) {
        e.printstacktrace();
    }
    sheet = book.getSheet(sheetName);
    Object[][] data = new Object[sheet.getLastRowNum()][sheet.getRow(0).getLastCellNum()];
    // System.out.println(sheet.getLastRowNum() + "--------" +
    // sheet.getRow(0).getLastCellNum());
    for (int i = 0; i < sheet.getLastRowNum(); i++) {
    for (int k = 0; k < sheet.getRow(0).getLastCellNum(); k++) {
        
            data[i][k] = sheet.getRow(i + 1).getCell(k).toString();
            
            
        }
    
    
    
    }
    return data;
}
  (Session info: chrome=90.0.4430.212)
For documentation on this error,please visit: https://www.seleniumhq.org/exceptions/stale_element_reference.html
Build info: version: '3.141.59',revision: 'e82be7d358',time: '2018-11-14T08:25:48'
System info: host: 'SaraN',ip: '192.168.43.159',os.name: 'Windows 10',os.arch: 'amd64',os.version: '10.0',java.version: '1.8.0_281'
Driver info: org.openqa.selenium.chrome.ChromeDriver
Capabilities {acceptInsecureCerts: false,browserName: chrome,browserVersion: 90.0.4430.212,chrome: {chromedriverVersion: 90.0.4430.24 (4c6d850f087da...,userDataDir: C:\Users\PRASANT\AppData\Lo...},goog:chromeOptions: {debuggerAddress: localhost:63398},javascriptEnabled: true,networkConnectionEnabled: false,pageLoadStrategy: normal,platform: WINDOWS,platformName: WINDOWS,proxy: Proxy(),setwindowRect: true,strictFileInteractability: false,timeouts: {implicit: 0,pageLoad: 300000,script: 30000},unhandledPromptBehavior: dismiss and notify,webauthn:extension:largeBlob: true,webauthn:virtualAuthenticators: true}
Session ID: 293792ed27516a35838f5e97966cdb47
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(UnkNown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(UnkNown Source)
    at java.lang.reflect.Constructor.newInstance(UnkNown Source)
    at org.openqa.selenium.remote.http.W3CHttpResponseCodec.createException(W3CHttpResponseCodec.java:187)
    at org.openqa.selenium.remote.http.W3CHttpResponseCodec.decode(W3CHttpResponseCodec.java:122)
    at org.openqa.selenium.remote.http.W3CHttpResponseCodec.decode(W3CHttpResponseCodec.java:49)
    at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:158)
    at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:83)
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:552)
    at org.openqa.selenium.remote.RemoteWebElement.execute(RemoteWebElement.java:285)
    at org.openqa.selenium.remote.RemoteWebElement.click(RemoteWebElement.java:84)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(UnkNown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(UnkNown Source)
    at java.lang.reflect.Method.invoke(UnkNown Source)
    at org.openqa.selenium.support.events.EventFiringWebDriver$EventFiringWebElement.lambda$new$0(EventFiringWebDriver.java:404)
    at com.sun.proxy.$Proxy13.click(UnkNown Source)
    at org.openqa.selenium.support.events.EventFiringWebDriver$EventFiringWebElement.click(EventFiringWebDriver.java:417)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(UnkNown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(UnkNown Source)
    at java.lang.reflect.Method.invoke(UnkNown Source)
    at org.openqa.selenium.support.pagefactory.internal.LocatingElementHandler.invoke(LocatingElementHandler.java:51)
    at com.sun.proxy.$Proxy11.click(UnkNown Source)
    at com.sra.qa.TC.Ocrfileupload.nextInvoice(Ocrfileupload.java:228)
    at com.sra.qa.Testcases.mutipleDatadriver.excelUpload(mutipleDatadriver.java:214)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(UnkNown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(UnkNown Source)
    at java.lang.reflect.Method.invoke(UnkNown Source)
    at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:132)
    at org.testng.internal.TestInvoker.invokeMethod(TestInvoker.java:599)
    at org.testng.internal.TestInvoker.invokeTestMethod(TestInvoker.java:174)
    at org.testng.internal.MethodRunner.runInSequence(MethodRunner.java:46)
    at org.testng.internal.TestInvoker$MethodInvocationAgent.invoke(TestInvoker.java:822)
    at org.testng.internal.TestInvoker.invokeTestMethods(TestInvoker.java:147)
    at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:146)
    at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:128)
    at java.util.ArrayList.forEach(UnkNown Source)
    at org.testng.TestRunner.privateRun(TestRunner.java:764)
    at org.testng.TestRunner.run(TestRunner.java:585)
    at org.testng.SuiteRunner.runTest(SuiteRunner.java:384)
    at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:378)
    at org.testng.SuiteRunner.privateRun(SuiteRunner.java:337)
    at org.testng.SuiteRunner.run(SuiteRunner.java:286)
    at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:53)
    at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:96)
    at org.testng.TestNG.runSuitesSequentially(TestNG.java:1218)
    at org.testng.TestNG.runSuitesLocally(TestNG.java:1140)
    at org.testng.TestNG.runSuites(TestNG.java:1069)
    at org.testng.TestNG.run(TestNG.java:1037)
    at org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:115)
    at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:251)
    at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:77)```

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。