我正在尝试将PhantomJS与Selenium Webdriver一起使用并获得成功,但对于特定网站,我发现它没有导航到URL。我用Python和C#都试过了 Python代码:
dcap = dict(webdriver.DesiredCapabilities.PHANTOMJS)
dcap["phantomjs.page.settings.userAgent"] = ("Mozilla/5.0 (Windows NT 6.2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36")
service_args = ['--load-images=false', '--proxy-type=None']
driver = webdriver.PhantomJS(executable_path="C:\\phantomjs.exe", service_args=service_args, desired_capabilities=dcap)
driver.get("https://satoshimines.com")
print driver.current_url
此代码段的输出为:about:blank
虽然它适用于任何其他网站。
与C#相同的代码:
IWebDriver driver = new PhantomJSDriver();
driver.Navigate().GoToUrl("https://satoshimines.com");
Console.WriteLine(driver.Url);
C#程序的输出也是一样。
我被困在这里需要帮助。
答案 0 :(得分:21)
以下是c# -
的完整代码解决方案PhantomJSDriverService service = PhantomJSDriverService.CreateDefaultService();
service.IgnoreSslErrors = true;
service.LoadImages = false;
service.ProxyType = "none";
driver = new PhantomJSDriver(service);
答案 1 :(得分:9)
对我来说,解决方案如下:
var service = PhantomJSDriverService.CreateDefaultService();
service.SslProtocol = "tlsv1"; //"any" also works
driver = new PhantomJSDriver(service);
我不知道为什么默认的sslv3不起作用。如果您确定SSL证书有效,则建议不要忽略错误以防止恶意证书。
更新:为了更好地解释为什么现在应该将SslProtocol设置为tlsv1而不是默认的sslv3,请查看@Artjom B下面提供的excellent cross link < / p>
答案 2 :(得分:7)
我似乎找到了解决方法。问题是SSL握手问题。
通过
'--ignore-ssl-errors = true'作为phantomjs的service_args解决了这个问题。
由于
答案 3 :(得分:4)
这对我有用:
DesiredCapabilities capabilities = DesiredCapabilities.phantomjs();
capabilities.setJavascriptEnabled(true);
capabilities.setCapability(PhantomJSDriverService.PHANTOMJS_CLI_ARGS, new String[] {"--web-security=no", "--ignore-ssl-errors=yes", "--ssl-protocol=tlsv1"});
driver = new PhantomJSDriver(capabilities);
答案 4 :(得分:1)
在运行phantomjs 1.9.7几个月没有发生任何事故后,突然出现了这个问题。解决方案?将phantomjs更新为2.0.0。