Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.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 无法将sun.net.www.protocol.https.HttpsURLConnectionImpl强制转换为sun.net.www.protocol.http.HttpURLConnection_Java_Selenium_Selenium Webdriver_Webdriver_Httpurlconnection - Fatal编程技术网

Java 无法将sun.net.www.protocol.https.HttpsURLConnectionImpl强制转换为sun.net.www.protocol.http.HttpURLConnection

Java 无法将sun.net.www.protocol.https.HttpsURLConnectionImpl强制转换为sun.net.www.protocol.http.HttpURLConnection,java,selenium,selenium-webdriver,webdriver,httpurlconnection,Java,Selenium,Selenium Webdriver,Webdriver,Httpurlconnection,我使用selenium库进行测试。但是下面的代码给了我类强制转换异常。我用谷歌搜索了这个异常,但没有找到解决方案。我对Https连接和http连接感到困惑。请帮助我解决此异常。多谢各位 import java.io.IOException; import java.net.MalformedURLException; import java.net.URL; import java.util.ArrayList; import java.util.List; import java.util.c

我使用selenium库进行测试。但是下面的代码给了我类强制转换异常。我用谷歌搜索了这个异常,但没有找到解决方案。我对Https连接和http连接感到困惑。请帮助我解决此异常。多谢各位

import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
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 sun.net.www.protocol.http.HttpURLConnection;


public class TestMakeMySushi {

  private static final String HttpURLConnection = null;

   public static void main(String[] args) throws InterruptedException, MalformedURLException, IOException {

    System.setProperty("webdriver.chrome.driver", "C:\\Users\\Dev-24\\Downloads\\chromedriver.exe");
    WebDriver driver = new ChromeDriver();
    driver.manage().window().maximize();
    driver.manage().deleteAllCookies();
    driver.manage().timeouts().pageLoadTimeout(30, TimeUnit.SECONDS);
    driver.manage().timeouts().implicitlyWait(40, TimeUnit.SECONDS);
    driver.get("https://www.makemysushi.com/404?");

    List<WebElement> linklist = driver.findElements(By.tagName("a"));
    linklist.addAll(driver.findElements(By.tagName("img")));
    System.out.println("size of all link and images list" + linklist.size());
    List<WebElement> activelist = new ArrayList<WebElement>();

    for (int i = 0; i < linklist.size(); i++) {
        System.out.println(linklist.get(i).getAttribute("href"));
        if (linklist.get(i).getAttribute("href") != null && (!linklist.get(i).getAttribute("href").contains("javascript"))) {
            activelist.add(linklist.get(i));
        }
    }


    System.out.println("size of activelink list" + activelist.size());


    for (int j = 0; j < activelist.size(); j++) {

        HttpURLConnection connection = (HttpURLConnection) new URL(activelist.get(j).getAttribute("href")).openConnection();
        connection.connect();
        String response = connection.getResponseMessage();
        connection.disconnect();
        System.out.println(activelist.get(j).getAttribute("href") + "----" + response);
    }
}
}

import sun.net.www.protocol.http.HttpURLConnection更改
HttpURLConnection
类的导入语句
to
import java.net.HttpURLConnection


您不应该在应用程序代码中使用
sun
包和类。它们是JVM内部的。

@KarolDowbecki的分析方向是正确的

而不是
sun.net.www.protocol.http.HttpURLConnectionHttpURLConnection应通过以下方式解决:

import java.net.HttpURLConnection;
我能够执行您的程序,该程序产生以下输出:

size of all link and images list81
https://makemysushi.com/404#navigation
https://makemysushi.com/
https://makemysushi.com/
https://makemysushi.com/sushi-university
https://makemysushi.com/sushi-recipes
https://makemysushi.com/sushi-essentials
https://makemysushi.com/store
https://www.facebook.com/Makemysushi/
https://www.instagram.com/explore/tags/makemysushi/
https://plus.google.com/+Makemysushi
mailto:info@makemysushi.com   // <-- this href attribute is of MailToURLConnection type raising the java.lang.ClassCastException which can't be casted to HttpURLConnection type
.
.
.
https://makemysushi.com/Sushi-share/contact-us
https://makemysushi.com/Sushi-share/about-us
null
null
null
null
size of activelink list77
https://makemysushi.com/404#navigation----Not Found
https://makemysushi.com/----OK
https://makemysushi.com/----OK
https://makemysushi.com/sushi-university----OK
https://makemysushi.com/sushi-recipes----OK
https://makemysushi.com/sushi-essentials----OK
https://makemysushi.com/store----OK
https://www.facebook.com/Makemysushi/----OK
https://www.instagram.com/explore/tags/makemysushi/----OK
https://plus.google.com/+Makemysushi----OK
Exception in thread "main" java.lang.ClassCastException: sun.net.www.protocol.mailto.MailToURLConnection cannot be cast to java.net.HttpURLConnection
    at demo.TestMakeMySushi.main(TestMakeMySushi.java:48)

无法建立成功的连接,因为无法将MailToURLConnection对象强制转换为HttpURLConnection对象并引发java.lang.ClassCastException

由于导入了

导入com.sun.net.ssl.HttpsURLConnection

删除该文件并在下面导入


导入javax.net.ssl.HttpsURLConnection

线程“main”java.lang.ClassCastException:sun.net.www.protocol.mailto.MailToURLConnection无法在TestMakeMySushi.main(TestMakeMySushi.java:57)处强制转换到java.net.HttpURLConnection(TestMakeMySushi.java:57)
MailToURLConnection
不是
HttpURLConnection
,而是
java.net.URLConnection
。注意类的层次结构,你不能回避它。@AshwiniPandey很高兴能帮助你!!!如果这个/任何答案对你有帮助,为了未来读者的利益,请向上投票。
size of all link and images list81
https://makemysushi.com/404#navigation
https://makemysushi.com/
https://makemysushi.com/
https://makemysushi.com/sushi-university
https://makemysushi.com/sushi-recipes
https://makemysushi.com/sushi-essentials
https://makemysushi.com/store
https://www.facebook.com/Makemysushi/
https://www.instagram.com/explore/tags/makemysushi/
https://plus.google.com/+Makemysushi
mailto:info@makemysushi.com   // <-- this href attribute is of MailToURLConnection type raising the java.lang.ClassCastException which can't be casted to HttpURLConnection type
.
.
.
https://makemysushi.com/Sushi-share/contact-us
https://makemysushi.com/Sushi-share/about-us
null
null
null
null
size of activelink list77
https://makemysushi.com/404#navigation----Not Found
https://makemysushi.com/----OK
https://makemysushi.com/----OK
https://makemysushi.com/sushi-university----OK
https://makemysushi.com/sushi-recipes----OK
https://makemysushi.com/sushi-essentials----OK
https://makemysushi.com/store----OK
https://www.facebook.com/Makemysushi/----OK
https://www.instagram.com/explore/tags/makemysushi/----OK
https://plus.google.com/+Makemysushi----OK
Exception in thread "main" java.lang.ClassCastException: sun.net.www.protocol.mailto.MailToURLConnection cannot be cast to java.net.HttpURLConnection
    at demo.TestMakeMySushi.main(TestMakeMySushi.java:48)
<a href="mailto:info@makemysushi.com" target="_blank"><i id="social-em" class="fa fa-envelope-square fa-3x social"></i></a>
HttpURLConnection connection = (HttpURLConnection) new URL(activelist.get(j).getAttribute("href")).openConnection();