Ban*_*eil 11 ruby selenium tumblr capybara poltergeist
我正在使用capybara poltergeist在tumblr.com上自动化一个小脚本
我的脚本与我的chrome驱动程序一起工作正常..我的恶作剧驱动程序加载所有其他网站就好了,但出于某种原因,Capybara::Poltergeist::StatusFailError当我尝试加载tumblr时会抛出一个.
复制步骤:
$ brew install phantomjs
$ gem install capybara
$ gem install poltergeist
$ gem install selenium-webdriver
$ irb
require 'capybara/poltergeist'
module Drivers
class Poltergeist < Capybara::Poltergeist::Driver
def needs_server?
false
end
end
end
Capybara.register_driver :poltergeist_errorless do |app|
Drivers::Poltergeist.new(app, js_errors: false, timeout: 10000, phantomjs_options: ['--load-images=no', '--ignore-ssl-errors=yes'])
end
session = Capybara::Session.new(:poltergeist_errorless)
session.visit('https://google.com') # This works fine
session.visit('https://tumblr.com') # This does not work?
Run Code Online (Sandbox Code Playgroud)
我试图设置我的所有标题来查看我的谷歌浏览器的请求,但这似乎也没有解决它.有没有人有什么建议?
Enr*_*sso 16
该问题与phantomjs SSL握手失败有关.你可以拿出我的要点并使用phantomjs运行,你会看到:
[cut]
= onResourceError()
- unable to load url: "https://www.tumblr.com/"
- error code: 6, description: SSL handshake failed
= onResourceReceived()
id: 3, stage: "end", response: {"contentType":null,"headers":[],"id":3,"redirectURL":null,"stage":"end","status":null,"statusText":null,"time":"2014-09-16T12:06:05.547Z","url":"https://www.tumblr.com/"}
= onLoadFinished()
status: fail
DONE WITH fail WebPage(name = "WebPage")
Run Code Online (Sandbox Code Playgroud)
检查一下解决方法是使用--ssl-protocol=any幻像,因此您的代码将变为:
Capybara.register_driver :poltergeist_errorless do |app|
Drivers::Poltergeist.new(app, js_errors: false, timeout: 10000, phantomjs_options: ['--load-images=no', '--ignore-ssl-errors=yes', '--ssl-protocol=any'])
end
Run Code Online (Sandbox Code Playgroud)
上班.
参考文献:
| 归档时间: |
|
| 查看次数: |
3291 次 |
| 最近记录: |