ReferenceError:无法找到变量:jQuery with Poltergeist/Capybara

Eri*_*ick 20 javascript jquery capybara phantomjs poltergeist

我想做什么

我正在尝试使用带有恶作剧的水豚来登录亚马逊这个网址...

https://developer.amazon.com/rp/sales.html
Run Code Online (Sandbox Code Playgroud)

很简单,除了当我尝试提交表单时,我收到错误... ReferenceError:找不到变量:jQuery ...

但是,jQuery的源代码在页面中,应该已经加载了.

我用来登录的代码就是这个......

  visit "https://developer.amazon.com/rp/sales.html"
  fill_in('ap_email', with: user)
  fill_in('ap_password', with: password)
  click_on('signInSubmit-input')
Run Code Online (Sandbox Code Playgroud)

提交触发javascript调用以验证输入.这使用jQuery,当它发生时,会抛出错误.

我所期待的

我期望当我访问登录页面时,该jquery将被加载到该页面上的其他javascripts.

我不知道为什么在这一点上不会加载jQuery.Phantomjs会加载页面并加载页面中引用的jQuery,不是吗?

我试过的事情

时间问题? - 访问后增加睡眠.

配置问题?

  • 我目前的配置

    include Capybara::DSL
    Capybara.default_driver = :poltergeist
    Capybara.register_driver :poltergeist do |app|
        Capybara::Poltergeist::Driver.new(app, phantomjs: Phantomjs.path)
    end
    Capybara.ignore_hidden_elements = false
    
    Run Code Online (Sandbox Code Playgroud)
  • 试图强制jQuery加载

    Capybara::Poltergeist::Driver.new(app,
                                  phantomjs: Phantomjs.path,
                                  extensions: ["handlers/jquery.js"])
    
    Run Code Online (Sandbox Code Playgroud)

我尝试了很多事情试图让我了解正在发生的事情,但我是空洞的.

任何关于我可能会在哪里或可能会发生什么的想法都将不胜感激.

小智 1

如果页面上有 jQuery,您很可能必须使用评估函数来进入页面的上下文。CasperJS有这个图http://docs.casperjs.org/en/latest/_images/evaluate-diagram.png http://phantomjs.org/api/webpage/method/evaluate.html

执行是沙盒的,网页无法访问幻像对象,也无法探测自己的设置。