对于特定站点,Selenium Webdriver + PhantomJS仍为大约:空白

时间:2013-12-20 13:46:48

标签: c# python selenium phantomjs

我正在尝试将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#程序的输出也是一样。

我被困在这里需要帮助。

5 个答案:

答案 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。