如何使用 Selenium WebDriver 检查 URL 中是否存在 404?


我们可以使用 Selenium WebDriver 检查 URL 中是否存在 404。404 检查实际上是要验证页面中是否存在损坏的链接。点击这样的链接时,我们不会被导向正确的页面。

损坏的链接可能由于以下原因而发生 −

  • 目标页面不再可用。

  • URL 的某些部分已被修改。

  • 页面上指定的 URL 不正确。

  • 防火墙或地理位置限制。

URL 可能包含以下状态代码 −

  • 5XX − 表示服务器出现问题。

  • 4XX − 表示无法确定资源。

  • 3XX − 表示重定向。

  • 2XX − 表示条件正确。

因此,我们看到,只有使用 2XX 状态代码,我们才能获得正确的 URL。对于页面上的所有链接,我们将发送一个 HTTP 请求并分析它的响应代码。

示例

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import java.util.concurrent.TimeUnit;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
import java.util.List;
public class BrokenURL{
   public static void main(String[] args) throws
   InterruptedException{
      System.setProperty("webdriver.gecko.driver",
         "C:\Users\ghs6kor\Desktop\Java\geckodriver.exe");
      WebDriver driver = new FirefoxDriver();
      // wait of 5 seconds
      driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
      driver.get("https://www.google.com/");
      //get list of elements with anchor tag
      List<WebElement> l = driver.findElements(By.tagName("a"));
      //iterate links
      for(int j=0; j<l.size(); j++) {
         WebElement e = l.get(i);
         //get URL of links with getAttribute()
         String u = e.getAttribute("href");
         // to catch MalFormedURLException
         try{
            //object of URL class
            URL link = new URL(u);
            // establish connection URL object
            HttpURLConnection c = (HttpURLConnection)link.openConnection();
            //have timeout
            c.setConnectTimeout(1000);
            // connection began
            c.connect();
            //getResponseCode() to obtain response code
            if(c.getResponseCode()== 200) {
               System.out.println(u+" − "+ c.getResponseMessage());
            }
            if(c.getResponseCode()== 404) {
               System.out.println(u+" − "+c.getResponseMessage());
            }
         }
         catch (Exception ex) {
         }
      }
   }
}

输出

更新于: 30-Jan-2021

2000+ 浏览量

为您的职业生涯开个好头

完成课程获得认证

立即开始
广告