簡體   English   中英

無法使用Java和Selenium Webdriver單擊網頁上的所有鏈接

[英]Not able to click all links on a web page using Java and Selenium Webdriver

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

當我運行此代碼時,出現以下錯誤:-

org.openqa.selenium.StaleElementReferenceException:陳舊元素引用:元素未附加到頁面文檔

我也嘗試了隱式等待,但是遇到了同樣的問題。

每次更改或刷新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);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM