Как заставить 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