Как выполнить команду в уже открытом браузере из файла ruby

Я использую фреймворк cucumber для тестирования веб-приложения, так как я разрабатываю свои скрипты, мне приходится снова и снова запускать браузер каждый раз после добавления чего-либо в мой код. У меня вопрос "Можно ли выполнить команду в уже открытом браузере из файла ruby ​​(.rb)"??. Что сэкономит мне много времени. Моя структура основана на огурце, капибаре и селене.

Заранее спасибо

3 ответа

Решение

Невозможно использовать существующий браузер с Selenium Webdriver.

Однако существуют драйверы (Capybara-Webkit, Poltergeist, HdmlUnitDriver Webdriver), которые работают быстрее и имеют меньше времени запуска, чем браузеры. Может быть, они будут полезны для вас.

Не уверен, что именно вы хотите... если вам придется "F5" каждый раз, когда вы что-то меняете в UI-коде, вы можете рассмотреть использование защитного камня.

guard + guard-livereload и rack-livereload, включенные в ваше приложение, автоматически обновляют браузер, если вы редактируете "views".

Я использовал версию Selenium Webdriver с исправленными обезьянами, которая держит браузер PhantomJS открытым между тестовыми прогонами. Смотрите этот пост в блоге: http://blog.sharetribe.com/2014/04/07/faster-cucumber-startup-keep-phantomjs-browser-open-between-tests/

Хитрость заключается в том, чтобы заглушить Selenium::WebDriver::PhantomJS::Service.create_process метод и сказать Selenium Driver использовать порт по умолчанию 8910, даже если он зарезервирован.

Вы можете добавить этот фрагмент кода в ваш файл config / test.rb:

class Selenium::WebDriver::PortProber
  def self.free?(port)
    true
  end
end

class Selenium::WebDriver::PhantomJS::Service
  def create_process(args)
    puts "Starting monkey-patched PhantomJS Selenium Webdriver"

    Struct.new("ChildProcessFake") do
      def start() end
      def exited?() true end
    end.new
  end
end

Теперь вы можете запустить PhantomJS на вкладке терминала:

phantomjs --webdriver=8910

А когда у вас запущен PhantomJS, вы можете начать тесты Cucumber.

Очевидно, это работает только для PhantomJS, но нечто подобное может работать и с другими браузерами.

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