首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >防止幻影提高Capybara::Poltergeist::StatusFailError请求永不终止的资产

防止幻影提高Capybara::Poltergeist::StatusFailError请求永不终止的资产
EN

Stack Overflow用户
提问于 2018-01-25 20:45:20
回答 2查看 224关注 0票数 1

我和Capybara::Poltergeist::Driver有一些问题

当我使用poltergeist访问以下url时,我正在处理一个问题,似乎不存在的资产需要永远加载,最终会引发一个错误:https://www.feinstein.senate.gov/public/index.cfm/e-mail-me

代码语言:javascript
复制
$ brew install phantomjs
$ gem install capybara -v 2.17.0
$ gem install poltergeist -v 1.7.0
$ gem install selenium-webdriver -v 2.53.4

然后在irb:

代码语言:javascript
复制
require 'capybara/poltergeist'

module Drivers
  class Poltergeist < Capybara::Poltergeist::Driver
    def needs_server?
      false
    end
  end
end

Capybara.register_driver :poltergeist_errorless do |app|
  options = ['--load-images=no', '--ignore-ssl-errors=yes', '--ssl-protocol=any', '--disk-cache=true', '--max-disk-cache-size=500000']
  Drivers::Poltergeist.new(app, js_errors: false, phantomjs_options: options)
end

session = Capybara::Session.new(:poltergeist_errorless)
session.visit('https://www.feinstein.senate.gov/public/index.cfm/e-mail-me')

10-20秒后,请求失败,我得到一个Capybara::Poltergeist::StatusFailError异常,其中有一条消息说:

对“https://www.feinstein.senate.gov/public/index.cfm/e-mail-me”的请求未能到达服务器,请检查DNS和/或服务器状态-已超时,以下资源仍在等待VALUE/wtid.js

但如果我当时打电话:

代码语言:javascript
复制
session.save_screenshot('/tmp/sc.png', full: true)

输出的屏幕截图显示页面的其余部分加载得很好。如果这是其他浏览器的话,它将继续愉快地运行,而不用担心要花费很长时间才能加载的资产。

是否有配置幻影Is不等待此资产和不引发此异常?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-01-25 22:18:54

处理这一问题的最简单方法是使用诡计黑名单阻止url - https://github.com/teampoltergeist/poltergeist#customization -和/或- https://github.com/teampoltergeist/poltergeist#url-blacklisting--whitelisting

如果您的情况更动态,您可以拯救异常,解析URL,将其添加到黑名单中,然后重试访问。

此外,没有必要覆盖needs_server?。如果您不将第二个参数(要运行的应用程序)传递给Session#new (您没有这样做),那么needs_server?就无关紧要了。

票数 1
EN

Stack Overflow用户

发布于 2018-01-25 21:15:16

我将在会话超时参数中四处游玩:

代码语言:javascript
复制
session = Capybara::Session.new(:poltergeist_errorless, :timeout=>ASSET_LOAD_TIME)
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48451598

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档