RemoteWebdriver started with PhantomJS does not op

2019-01-15 19:57发布

I am using selenium with PhantomJs to scrape the URL. I initialized the driver as below

final DesiredCapabilities caps = DesiredCapabilities.chrome();
caps.setCapability(
        PhantomJSDriverService.PHANTOMJS_EXECUTABLE_PATH_PROPERTY,
        "PhantomJsPath");
caps.setCapability("page.settings.loadImages", false);
caps.setCapability("trustAllSSLCertificates", true);

RemoteWebDriver driver = new PhantomJSDriver(caps);
driver.setLogLevel(Level.OFF);
driver.get("https://.......")

The pagesource obtained from the driver is empty

Am I missing anything?

1条回答
爷的心禁止访问
2楼-- · 2019-01-15 20:32

Recently the POODLE vulnerability forced websites to remove SSLv3 support. Since PhantomJS < v1.9.8 uses SSLv3 by default, the page cannot be loaded. To fix this, you would need to run PhantomJS with --ssl-protocol=tlsv1 or --ssl-protocol=any. See this answer for plain PhantomJS.

caps = DesiredCapabilities.phantomjs(); // or new DesiredCapabilities();
caps.setCapability(PhantomJSDriverService.PHANTOMJS_CLI_ARGS, 
        new String[] {"--ssl-protocol=tlsv1"});
// other capabilities
driver = new PhantomJSDriver(caps);

If this doesn't solve the issue, you can also add

"--web-security=false", "--ignore-ssl-errors=true"

to the String array of cli args as seen in SiKing's answer here.

查看更多
登录 后发表回答