Подтвердить что ты не робот

Save_and_open_page не работает с capybara 2.0?

Я только что обновил capybara до 2.0, и все мои вызовы save_and_open_page возвращают html-страницу без стилизации. Он имеет ссылки на таблицы стилей в верхней части страницы. Когда я вернусь назад к capybara 1.3, стили снова работают. Кто-нибудь знает, как это исправить, и/или в чем проблема?

спасибо, Dave


Обновление 1.

хак:

Я нашел разумный способ обойти проблему, следуя ссылкам, рекомендованным simonmorley: Проблема Capybara Webkit который указывает на: capybara-screenshot

В нем используется скриншот capybara-screenshot, чтобы получить скриншот того, как выглядит страница. Когда вы объединяете его с save_and_open_page, который генерирует html, вы можете видеть, как он выглядит, и видеть HTML.

    save_and_open_page
    Capybara::Screenshot.screenshot_and_open_image

Если бы я мог работать Capybara::Screenshot.screenshot_and_save_page, тогда я думаю, что у меня может быть решение (если название подразумевает действие, которое, как я думаю, оно делает). Однако, когда я пытаюсь, я получаю cannot load such file -- capybara/util/save_and_open_page


Обновление 2.

!! подождите, screenshot_and_open_image теперь не работает (изображение png не создается или не отображается).!!


Обновление 3.

Тестовое приложение:

Я создал тестовое приложение и разместил его на test_capybara_screenshot на Github.

Когда я запускаю это тестовое приложение в разработке, на странице появляется стильный стиль красного фона. Когда я запускаю тесты, единственное, что работает для меня, это save_and_open_page, за исключением того, что нет стиля.

Обратите внимание, что когда я запускаю какие-либо тесты, я получаю следующее предупреждение:

ПРЕДУПРЕЖДЕНИЕ: Nokogiri был создан против LibXML версии 2.7.8, но динамически загружал 2.7.3

Подробности теста rspec:

  • На странице save_and_open_ отображается скучный белый фон (нет укладка).
  • Сценарий screenshot_and_open_image возвращается с ошибкой:

Rack:: Драйвер test capybara не имеет возможности выводить снимки экрана. Пропуск.

Ошибка при открытии /~/Documents/experiments/test_capybara_screenshot/tmp/capybara/screenshot-2012-11-26-07-48-29.png с опциями {}: не найдено ни одного приложения для обработки '/~/Documents/эксперименты/test_capybara_screenshot/TMP/водосвинка/скриншот-2012-11-26-07-48-29.png

  • Возврат к экрану screenshot_and_save_page:

Произошла ошибка при перехвате

LoadError: невозможно загрузить такой файл - capybara/util/save_and_open_page произошло в ~/.rvm/gems/[email protected]/gems/activesupport-3.2.6/lib/active_support/dependencies.rb: 251: в `require '


4b9b3361

Ответ 1

Мне удалось исправить проблему с помощью save_and_open_page после просмотра и копания блога. Я уронил камень capybara_screenshot из моего проекта. Вы можете увидеть мой рабочий код в моем github test_capybara_screenshot репозитории. Решение, которое я выяснил, использует некоторые указатели, которые я нашел на веб-сайте capybara github.

Предположения:

  • Вы используете rspec для тестирования.
  • Ваше приложение уже настроено для использования конвейера активов.

Первое, что я делаю, - настроить его так, чтобы активы были предварительно скомпилированы в тестовый каталог. Я делаю это, добавляя следующий код в файл spec/spec_helper.rb в цикле RSpec.configure:

config.before (scope = :suite) do
  %x[bundle exec rake assets:precompile]
end

Я указываю, где активы предварительно скомпилированы в файле config/environments/test.rb:

config.assets.prefix = "assets_test"    # place test assets in public/assets_test directory
config.action_controller.asset_host = "file://#{::Rails.root}/public"

Это делает так, что тестовые активы не зависят от активов разработки и генерируются только во время запуска тестового набора.

Если вы сделаете это, вы, вероятно, захотите иметь git игнорировать каталоги /public/assets*.

Ответ 2

Попробуйте добавить в свой файл gem следующее:

group :test do
  gem "capybara"
  gem "launchy"
end

save_and_open_page не будет работать без этого, я не верю.

- Обновлено -

Я тестировал это для вас, и когда я использовал метод save и open, я получаю ту же ошибку. В моей настройке это связано с тем, что моя страница ссылается:

<link href="/assets/application.css" media="screen" rel="stylesheet" type="text/css" />

Это происходит в Firefox, Chrome и Safari. По словам инспектора, ни один из файлов не найден.

Я не рассматривал это слишком подробно и не получил ответа, почему он не работает. Однако есть и ряд людей, борющихся с этим:

https://github.com/jnicklas/capybara/issues/485

И, немного больше информации о capybara и прекомпиляции активов:

https://github.com/jnicklas/capybara/pull/609

И что может быть исправить здесь:

https://groups.google.com/forum/#!msg/ruby-capybara/SBCor8UUj7w/hv97EgUQ1P4J

Однако, если вы просто хотите увидеть свою страницу, вы можете попробовать это: удалить scrap save_and_open_page и изменить свои тесты на использование javascript. Таким образом, мои страницы открываются нормально.

 require 'spec_helper'

 describe "Foo" do
   it "should fail if Bar is lactose intolerant", :js => true do
     # .....
   end
 end

Попробуйте это и сообщите мне, если это поможет.


(от Taylored Web Sites):

Я вижу страницу на несколько секунд, затем она исчезает. Есть ли способ закрыть окно браузера?