Java 如何排除已验证的链接验证?

Java 如何排除已验证的链接验证?,java,selenium,Java,Selenium,在下面的脚本中,我必须验证页面上的链接。这里是扭曲,我需要验证这个页面中的链接,还需要单击每个链接,然后验证该页面上的链接,但我需要排除在第一个页面中验证的链接。我真的不知道怎么表演。我可以点击链接并验证该页面中的链接,但是我应该使用什么代码来排除那些已经验证过的链接呢。如果可以的话,请帮忙。谢谢 package siteLinks; import java.io.IOException; import java.net.HttpURLConnection; import java.net.Ma

在下面的脚本中,我必须验证页面上的链接。这里是扭曲,我需要验证这个页面中的链接,还需要单击每个链接,然后验证该页面上的链接,但我需要排除在第一个页面中验证的链接。我真的不知道怎么表演。我可以点击链接并验证该页面中的链接,但是我应该使用什么代码来排除那些已经验证过的链接呢。如果可以的话,请帮忙。谢谢

package siteLinks;
import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Iterator;
import java.util.List;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;

public class LinksValidation {
    private static WebDriver driver = null;

    public static void main(String[] args) {
        // TODO Auto-generated method stub

        String homePage = "http://www.safeway.com/Shopstores/Site-Map.page";
        String url = "http://www.safeway.com/Shopstores/Site-Map.page";
        HttpURLConnection huc = null;
        int respCode = 200;

        System.setProperty("webdriver.chrome.driver", "C:\\Users\\aaarb00\\Desktop\\Quotients\\lib\\chromedriver.exe");

        driver = new ChromeDriver();

        driver.manage().window().maximize();

        driver.get(homePage);

        List<WebElement> links = driver.findElements(By.tagName("a"));

        Iterator<WebElement> it = links.iterator();

        while(it.hasNext()){

            url = it.next().getAttribute("href");

            System.out.println(url);

            if(url == null || url.isEmpty()){
                System.out.println("URL is either not configured for anchor tag or it is empty");
                continue;
            }

            try {
                huc = (HttpURLConnection)(new URL(url).openConnection());

                huc.setRequestMethod("HEAD");

                huc.connect();

                respCode = huc.getResponseCode();

                if(respCode >= 400){
                    System.out.println(url+" is a broken link");
                }
                else{
                    System.out.println(url+" is a valid link");
                }

            } catch (MalformedURLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }

        driver.quit();

    }
}
包站点链接;
导入java.io.IOException;
导入java.net.HttpURLConnection;
导入java.net.MalformedURLException;
导入java.net.URL;
导入java.util.Iterator;
导入java.util.List;
导入org.openqa.selenium.By;
导入org.openqa.selenium.WebDriver;
导入org.openqa.selenium.WebElement;
导入org.openqa.selenium.chrome.ChromeDriver;
公共类链接验证{
私有静态WebDriver=null;
公共静态void main(字符串[]args){
//TODO自动生成的方法存根
字符串主页=”http://www.safeway.com/Shopstores/Site-Map.page";
字符串url=”http://www.safeway.com/Shopstores/Site-Map.page";
HttpURLConnection huc=null;
int respCode=200;
System.setProperty(“webdriver.chrome.driver”,“C:\\Users\\aaarb00\\Desktop\\Quotients\\lib\\chromedriver.exe”);
驱动程序=新的ChromeDriver();
driver.manage().window().maximize();
获取(主页);
列表链接=driver.findElements(按.tagName(“a”));
Iterator it=links.Iterator();
while(it.hasNext()){
url=it.next().getAttribute(“href”);
System.out.println(url);
if(url==null | | url.isEmpty()){
System.out.println(“URL不是为锚标记配置的,就是为空”);
继续;
}
试一试{
huc=(HttpURLConnection)(新URL(URL.openConnection());
huc.setRequestMethod(“HEAD”);
huc.connect();
respCode=huc.getResponseCode();
如果(respCode>=400){
System.out.println(url+“是一个断开的链接”);
}
否则{
System.out.println(url+“是有效链接”);
}
}捕获(格式错误){
//TODO自动生成的捕捉块
e、 printStackTrace();
}捕获(IOE异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
}
driver.quit();
}
}

您可以将已访问的链接存储在ArrayList中,并检查该ArrayList是否已包含该链接

ArrayList<String> visitedLinks = new ArrayList<String>();

List<WebElement> elements = driver.findElements(By.tagName("a"));

for(WebElement element : elements) {
    if(visitedLinks.contains(element.getAttribute("href"))) {
        System.out.println("Link already checked.  Not checking.");
    } else {
        visitedLinks.add(element.getAttribute("href"));
        // Your link checking code
    }
}
ArrayList visitedLinks=new ArrayList();
列表元素=driver.findElements(按.tagName(“a”));
for(WebElement:elements){
if(visitedLinks.contains(element.getAttribute(“href”)){
System.out.println(“链接已检查。未检查”);
}否则{
visitedLinks.add(element.getAttribute(“href”);
//你的链接检查代码
}
}

我不确定您是如何检查页面的链接的,您检查的是status 200 OK响应,但您可能应该为要检查链接的每个页面定义URL,然后在这些URL之间循环。否则,你很可能会退出你正在检查链接的网站,逃到更广阔的互联网上。在这种情况下,您的测试可能永远不会完成。

您好,我对java这个东西非常陌生,正在努力赶上并学习。我无法运行它,并且出现以下错误。陈旧元素引用:元素未附加到页面文档陈旧元素引用发生在页面结构发生更改,使您发现的元素不再有效,无法与之交互时。其中一个最常见的原因是离开页面导航,然后尝试与存储的元素交互。