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

Vik*_*jha 14 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
Run Code Online (Sandbox Code Playgroud)

此代码段的输出是:about:blank
然而它适用于任何其他网站.

与C#相同的代码:

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

C#程序的输出也是一样的.

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

Vik*_*jha 21

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

PhantomJSDriverService service = PhantomJSDriverService.CreateDefaultService();
service.IgnoreSslErrors = true;
service.LoadImages = false;
service.ProxyType = "none";

driver = new PhantomJSDriver(service);
Run Code Online (Sandbox Code Playgroud)


Erw*_*yer 9

对我来说,解决方案如下:

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

driver = new PhantomJSDriver(service);
Run Code Online (Sandbox Code Playgroud)

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

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


Vik*_*jha 7

我似乎找到了解决方案.问题是SSL握手问题.通过将
'--ignore-ssl-errors = true'作为service_args传递给phantomjs解决了这个问题.

谢谢