Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 检查链接的URL状态代码时,无法将HttpResponseCode的错误解析为类型_Java_Selenium_Selenium Webdriver_Webdriver_Httpurlconnection - Fatal编程技术网

Java 检查链接的URL状态代码时,无法将HttpResponseCode的错误解析为类型

Java 检查链接的URL状态代码时,无法将HttpResponseCode的错误解析为类型,java,selenium,selenium-webdriver,webdriver,httpurlconnection,Java,Selenium,Selenium Webdriver,Webdriver,Httpurlconnection,我编写了检查URL状态代码的简单程序。但eclipse给我的错误是HttpResponseCode不能解析为类型。我该怎么办 import static org.testng.Assert.assertEquals; import java.net.HttpURLConnection; import java.net.URL; import java.util.List; import java.util.concurrent.TimeUnit; import org.openqa.selen

我编写了检查URL状态代码的简单程序。但eclipse给我的错误是HttpResponseCode不能解析为类型。我该怎么办

import static org.testng.Assert.assertEquals;
import java.net.HttpURLConnection;
import java.net.URL;
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.openqa.selenium.interactions.Actions;
import org.testng.Assert;

public class StarWarSocialMenu {

    public static void main(String[] args) throws Exception {       
        String sDriverPath = "C:\\BrowserDriver\\chromedriver.exe";
        System.setProperty("webdriver.chrome.driver", sDriverPath);
        int statusCode;
        final String URL = "https://www.starwars.com/";
        WebDriver driver = new ChromeDriver();
        driver.manage().timeouts().setScriptTimeout(10000, TimeUnit.SECONDS);
        driver.get(URL);
        driver.manage().window().maximize();
        List<WebElement> socialMenu = driver.findElements(By.xpath("//div[@id='nav-external-links']//a")); 

        //System.out.println("Total Amenities "  + socialMenu.size());
        for (WebElement e : socialMenu)
        {
            //System.out.println(e.getAttribute("href"));
            String href = e.getAttribute("href");
            statusCode = new HttpResponseCode().httpResponseCodeViaGet(href);

            if(200 != statusCode) {
                System.out.println(href + " gave a response code of " + statusCode);
            }
        }
    }
}
导入静态org.testng.Assert.assertEquals;
导入java.net.HttpURLConnection;
导入java.net.URL;
导入java.util.List;
导入java.util.concurrent.TimeUnit;
导入org.openqa.selenium.By;
导入org.openqa.selenium.WebDriver;
导入org.openqa.selenium.WebElement;
导入org.openqa.selenium.chrome.ChromeDriver;
导入org.openqa.selenium.interactions.Actions;
导入org.testng.Assert;
公共类StarWarSocialMenu{
公共静态void main(字符串[]args)引发异常{
字符串sDriverPath=“C:\\BrowserDriver\\chromedriver.exe”;
System.setProperty(“webdriver.chrome.driver”,sDriverPath);
int状态码;
最终字符串URL=”https://www.starwars.com/";
WebDriver驱动程序=新的ChromeDriver();
driver.manage().timeouts().setScriptTimeout(10000,TimeUnit.SECONDS);
获取(URL);
driver.manage().window().maximize();
List socialMenu=driver.findElements(By.xpath(“//div[@id='nav-external-links']//a”);
//System.out.println(“总体设施”+socialMenu.size());
对于(WebElement e:socialMenu)
{
//System.out.println(e.getAttribute(“href”);
字符串href=e.getAttribute(“href”);
statusCode=new-HttpResponseCode().httpresponsecodevigatet(href);
如果(200!=状态代码){
System.out.println(href+”给出了一个“+状态码”的响应码;
}
}
}
}
我该怎么办?如果需要下载jar文件,那么我可以从那里下载。

根据Selenium WebDriver中的说明,没有直接的方法来检查响应状态代码,因此我们必须使用另一个库。您可以使用或

httpResponseCodeViaGet() 要使用该方法,您必须下载并使用以下导入:

import io.restassured.RestAssured;
然后您可以使用:

new HttpResponseCode().httpResponseCodeViaGet("http://www.google.com");
解决方案 作为替代方案,您可以使用HttpURLConnection和
openConnection()
,并且可以使用以下解决方案:

package demo;

import java.net.HttpURLConnection;
import java.net.URL;
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 BrokenLinks {

    public static void main(String[] args) throws Exception {

        String sDriverPath = "C:\\Utility\\BrowserDrivers\\chromedriver.exe";
        System.setProperty("webdriver.chrome.driver", sDriverPath);
        String statusCode;
        final String URL = "https://www.starwars.com/";
        WebDriver driver = new ChromeDriver();
        driver.get(URL);
        driver.manage().window().maximize();
        List<WebElement> socialMenu = driver.findElements(By.xpath("//div[@id='nav-external-links']//a")); 
        System.out.println("Total Amenities "  + socialMenu.size());
        for (WebElement e : socialMenu)
        {
            String href = e.getAttribute("href");
            System.out.println(e.getAttribute("href"));
            HttpURLConnection connection = (HttpURLConnection) new URL(href).openConnection();
            connection.connect();
            statusCode = connection.getResponseMessage();
            connection.disconnect();
            if(!statusCode.contains("200")) {
                System.out.println(href + " gave a response code of " + statusCode);
            }
        }
    }
}
软件包演示;
导入java.net.HttpURLConnection;
导入java.net.URL;
导入java.util.List;
导入org.openqa.selenium.By;
导入org.openqa.selenium.WebDriver;
导入org.openqa.selenium.WebElement;
导入org.openqa.selenium.chrome.ChromeDriver;
公共类断开链接{
公共静态void main(字符串[]args)引发异常{
字符串sDriverPath=“C:\\Utility\\BrowserDrivers\\chromedriver.exe”;
System.setProperty(“webdriver.chrome.driver”,sDriverPath);
字符串状态码;
最终字符串URL=”https://www.starwars.com/";
WebDriver驱动程序=新的ChromeDriver();
获取(URL);
driver.manage().window().maximize();
List socialMenu=driver.findElements(By.xpath(“//div[@id='nav-external-links']//a”);
System.out.println(“总体设施”+socialMenu.size());
对于(WebElement e:socialMenu)
{
字符串href=e.getAttribute(“href”);
System.out.println(e.getAttribute(“href”);
HttpURLConnection连接=(HttpURLConnection)新URL(href).openConnection();
connection.connect();
statusCode=connection.getResponseMessage();
连接断开();
如果(!statusCode.包含(“200”)){
System.out.println(href+”给出了一个“+状态码”的响应码;
}
}
}
}