Как заставить jQuery работать с PhantomJS, Полтергейстом и Капибарой

У меня есть серия автоматических тестов в Ruby, которые используют Capybara, Poltergeist и PhantomJS для взаимодействия с веб-страницами. Однако проблема в том, что некоторые страницы не работают должным образом, потому что jQuery, похоже, не загружается. Например, на одной веб-странице есть такой код:

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

Но это, похоже, не работает / работает. Из того, что я прочитал, видно, что PhantomJS не работает естественным образом с jQuery (или, по крайней мере, автоматически не загружает jQuery). Как я могу это исправить. Имейте в виду, я не могу изменить реальный код веб-страницы.

Описание: Как я могу добавить / внедрить / загрузить jQuery при использовании PhantomJS, Poltergeist и Capybara?

РЕДАКТИРОВАТЬ: Вот как я использую фантомы. Обратите внимание, что я никогда не использую фантомы напрямую. Исполняемый файл phantomjs косвенно используется 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 ответ

Вероятно, вашему jQuery нужно время для выполнения. Добавьте в свой тест оператор find(), ищущий результат jQuery. Он будет заблокирован, как описано здесь: http://www.elabs.se/blog/53-why-wait_until-was-removed-from-capybara

Другие вопросы по тегам