2017-05-04 1 views
-1
여기

는 코드 조각입니다 : 마지막 줄에서셀레늄 자바 크롬 : 부실 예외

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(); 

내가 내려면

"오래된 요소 참조 : 요소가 페이지 문서에 연결되어 있지 않습니다"

예외.

왜 어떻게 해결할 수 있습니까? Chromdriver 2.2.9를 사용합니다.

감사

+1

루프를 통해 목록 요소를 반복합니다. 권리 ? – NarendraR

+0

'elmNextDayArrow.click();'이 행은 무엇을 하는가? – kushal

+0

@NarendraRajput 나는 ... – dushkin

답변

0

음,이 완벽한 솔루션 아마 아니기 때문에 - 그것은 나를 위해 일한 적어도 ...

나는이 같은 방법으로 모든 관련 코드를 넣어 :

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; 
} 

}

그리고 효과가있었습니다. 당신은 당신이 물론 원하는 값 5를 바꿀 수 있습니다.

관련 문제