私は Web アプリケーションのテストに cucumber フレームワークを使用しています。スクリプトを開発しているので、コードに何かを追加した後は毎回ブラウザーを何度も起動する必要があります。私の質問は、「既に開いているブラウザーで ruby(.rb) ファイルからコマンドを実行することは可能ですか??」です。これにより、多くの時間を節約できます。私のフレームワークは、キュウリ、カピバラ、およびセレンの webdriver に基づいています。
前もって感謝します
Selenium Webdriver で既存のブラウザーを使用することはできません。
ただし、ブラウザーよりも高速で起動時間が短いドライバー (Capybara-Webkit、Poltergeist、Webdriver の HtmlUnitDriver) があります。たぶん、彼らはあなたのために良いでしょう.
私は、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
化し、予約済みであってもデフォルトのポート 8910 を使用するように Selenium ドライバーに指示することです。
このコードを 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 でのみ機能しますが、同様のものが他のブラウザーでも機能する可能性があります。
正確に何が欲しいかわからない... UIコードで何かを変更するたびに「F5」を押す必要がある場合は、guard gemの使用を検討してください。
「ビュー」を編集すると、アプリに含まれるguard + guard-livereloadとrack-livereloadが自動的にブラウザを更新します。