Selenium Webdriver + PhantomJS对于特定站点仍处于about:blank



我正在尝试将PhantomJS与Selenium Webdriver一起使用并取得了成功,但是对于特定网站,我看到它无法导航到URL。我已经用Python和C#尝试过。
蟒蛇代码:

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

此代码片段的输出为:关于:空白
而它适用于任何其他网站。

与 C# 相同的代码:

IWebDriver driver = new PhantomJSDriver();
driver.Navigate().GoToUrl("https://satoshimines.com");
Console.WriteLine(driver.Url);

C# 程序的输出也是相同的。

我被困在这里,需要帮助。

以下是 c# 的完整代码解决方案 -

PhantomJSDriverService service = PhantomJSDriverService.CreateDefaultService();
service.IgnoreSslErrors = true;
service.LoadImages = false;
service.ProxyType = "none";
driver = new PhantomJSDriver(service);
对我来说

,解决方案如下:

var service = PhantomJSDriverService.CreateDefaultService();
service.SslProtocol = "tlsv1"; //"any" also works
driver = new PhantomJSDriver(service);

我不知道为什么默认的 sslv3 不起作用。如果您确定SSL证书有效,则强烈建议不要忽略错误以防止恶意证书。

更新:为了很好地解释为什么 SslProtocol 现在应该设置为 tlsv1 而不是默认的 sslv3,请查看下面 @Artjom B 提供的出色交叉链接。

看来我已经找到了解决这个问题的方法。问题是 SSL 握手问题。
通过"--ignore-ssl-errors=true"作为phantomJS的service_args解决了这个问题。

谢谢

这对我有用:

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);
<</div> div class="one_answers">

在运行 phantomjs 1.9.7 几个月没有发生事故后,在应用程序上突然遇到了这个问题。解决方案是什么?将虚拟模型更新到 2.0.0。

最新更新