2017-03-05 89 views
0
package testPackage; 

import java.util.List; 
import java.util.concurrent.TimeUnit; 
import org.openqa.selenium.By; 
import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.WebElement; 
import org.openqa.selenium.chrome.ChromeDriver; 
import org.testng.annotations.*; 

public class AllLinkVerificationInAPage { 
    WebDriver driver; 
    @BeforeTest 
    public void OpenApp() 
    { 
     System.setProperty("webdriver.chrome.driver", "E:/Selenium/Webdriver /Softwares/chromedriver.exe"); 
     driver = new ChromeDriver(); 
     driver.navigate().to("http://ndtv.com/"); 
     driver.manage().window().maximize(); 
     driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); 
     WebElement popUp = driver.findElement(By.xpath("//*[@id='__cricketsubscribe']/div[2]/div[2]/a[1]")); 
     popUp.click();  
    } 

    @Test 
    public void clickLinks() throws InterruptedException 
    { 
     //extract the list of WenElements and its count 
     List<WebElement> linkElements = driver.findElements(By.tagName("a")); 
     int count = linkElements.size(); 
     System.out.println("Total number of links = " + count); 

     //test each link 
     for(WebElement currentElement : linkElements) 
     { 
      String link = currentElement.getText(); 
      System.out.println(link); 
      if(link !="") 
      { 
       currentElement.click(); 
       System.out.println("Working Fine"); 

      } 

      driver.navigate().back(); 
      Thread.sleep(3000); 
     } 
    } 
} 

当我运行这段代码我得到以下错误网页上的所有链接: -无法点击使用Java和硒的webdriver

org.openqa.selenium.StaleElementReferenceException: stale element reference: element is not attached to the page document

我试图隐等待为好,但得到同样的问题。

回答

0

每当DOM被改变或刷新时,就像转到不同的页面一样,driver会丢失它之前所在的元素。您需要重新定位每个迭代列表

int count = driver.findElements(By.tagName("a")).size(); 
for (int i = 0 ; i < count ; ++i) { 
    List<WebElement> linkElements = driver.findElements(By.tagName("a")); 
    WebElement currentElement = linkElements.get(i); 

    String link = currentElement.getText(); 
    System.out.println(link); 
    if(link != "") 
    { 
     currentElement.click(); 
     System.out.println("Working Fine"); 
    } 

    driver.navigate().back(); 
    Thread.sleep(3000); 
} 
+0

非常感谢Guy,它完美的工作。 – Deepak