如何让jQuery与PhantomJS,Poltergeist和Capybara一起工作

时间:2013-11-26 00:17:17

标签: jquery ruby capybara phantomjs poltergeist

我在Ruby中进行了一系列自动化测试,使用Capybara,Poltergeist和PhantomJS与网页进行交互。但是,问题是某些页面无法正常工作,因为jQuery似乎没有加载。例如,在一个网页上有代码如:

<script type="text/javascript">
<!--
  jQuery(window).load(function() {
    //Do Javascript-y things
  });
//-->
</script>

但这似乎不起作用/运行。从我所看到的看来,PhantomJS似乎不能自然地与jQuery一起工作(或者至少它不会自动加载jQuery)。我怎样才能解决这个问题。请记住,我无法更改网页的实际代码。

总结:如何在使用PhantomJS,Poltergeist和Capybara时添加/注入/加载jQuery?

编辑:这是我如何使用phantomjs。请注意我从未直接使用过phantomjs。 Phateromjs可执行文件由Poltergeist间接使用:

Capybara.register_driver :poltergeist do |app|
    driver = Capybara::Poltergeist::Driver.new(app,
                                      :debug => debug,
                                      :window_size => [1616, 1000],
                                      :js_errors => true,
                      :cookies => true,
    :phantomjs_options => ['--ignore-ssl-errors=true', 
               '--web-security=false', 
               '--local-to-remote-url-access=true', 
               '--proxy-type=none' ],:timeout => 180
       )       

1 个答案:

答案 0 :(得分:0)

可能你的jQuery需要时间来执行。在测试中添加一个find()语句,查找jQuery的结果。它将阻止,如下所述:http://www.elabs.se/blog/53-why-wait_until-was-removed-from-capybara