2017-05-04 4 views
-1

Hier ist ein Codefragment:Selen Java Chrome: Stale Ausnahme

System.setProperty(Constants.WEBDRIVER_CHROME_DRIVER_PROP, Constants.WEBDRIVER_CHROME_DRIVER_PATH); 

    m_chromeWebdriver = new ChromeDriver(); 
    m_chromeWebdriver.get("mysite.org"); 

    WebElement arrowElement = m_chromeWebdriver.findElement(By.cssSelector(_ARROW_NEXT_DAY)); 
    arrowElement.click(); 

    WebElement elmMainTable = m_chromeWebdriver.findElement(By.className("table-main")); 

    List<WebElement> allRows = elmMainTable.findElements(By.tagName("tr")); 

    for (WebElement row : allRows) { 

     List<WebElement> cells = row.findElements(By.tagName("td")); 
     for (WebElement cell : cells) { 
      System.out.println(cell.getText()); 
     } 
    } 
    m_chromeWebdriver.quit(); 

In der letzten Zeile mir eine

"abgestanden Element Referenz: Element ist nicht auf die Seite Dokument angehängt"

Ausnahme.

Warum und wie kann ich das lösen? Ich benutze Chromdriver 2.2.9.

Dank

+1

Sie durchlaufen das Listenelement durch die Schleife. Recht ? – NarendraR

+0

'elmNextDayArrow.click();' Was macht diese Zeile? – kushal

+0

@NarendraRajput Ich möchte ... – dushkin

Antwort

0

Nun, da dies wahrscheinlich nicht die perfekte Lösung - zumindest für mich gearbeitet ...

ich alle wie diese einen entsprechenden Code in eine Methode setzen:

private static void handleTable() { 

    for (int i = 1; i < 5; i++) { 

    try { 
     WebElement elmMainTable = m_chromeWebdriver.findElement(By.className("table-main")); 

     List<WebElement> allRows = elmMainTable.findElements(By.cssSelector(".table-main tr")); 

     for (WebElement row : allRows) { 

      List<WebElement> cells = row.findElements(By.tagName("td")); 

      for (WebElement cell : cells) { 

       System.out.print(cell.getText() + "\t"); 
      } 
      System.out.println(); 
     } 

    } catch (StaleElementReferenceException e) { 

     //e.printStackTrace(); 

     handleTable(); 
    } 

    return; 
} 

}

Und es hat funktioniert! Sie können natürlich den Wert 5 beliebig ändern.