Ошибка для HttpResponseCode не может быть разрешена для типа при проверке кода состояния URL для ссылок - PullRequest
0 голосов
/ 08 февраля 2019

Я написал простую программу для проверки кода статуса URL.Но затмение дает мне ошибку, говоря, что 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);
            }
        }
    }
}

Что мне делать?если нужно скачать jar-файлы, откуда я могу их скачать.

1 Ответ

0 голосов
/ 09 февраля 2019

Согласно Как получить код состояния ответа с помощью Selenium WebDriver в Selenium WebDriver нет прямого метода проверки кода состояния ответа, поэтому мы должны использовать другую библиотеку.Вы можете использовать Apache HttpClient или REST-гарантированную библиотеку от Jayway .

httpResponseCodeViaGet ()

Чтобы использовать метод 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);
            }
        }
    }
}
...