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

时间:2015-05-28 02:13:32

标签: javascript jquery phantomjs capybara poltergeist

我正在尝试做什么

我正试图用恶作剧使用水豚来登录亚马逊......

https://developer.amazon.com/rp/sales.html

很简单,除了当我尝试提交表单时,我收到错误...     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')

提交触发器调用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
    
  • 试图强制jQuery加载

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

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

对于我可能会在哪里或可能会发生什么的任何想法都将非常感激。

2 个答案:

答案 0 :(得分:0)

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

  

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

答案 1 :(得分:0)

执行被沙箱化,网页无法访问幻像对象,并且无法探查自己的设置。