2016-06-12 10 views
3

JavaScriptが無効のときでも機能するように設計されたアプリがありますので、それらのケースをカバーする仕様をいくつか書きたいと思います。Capybara + Seleniumを使用しているときにJavaScriptを無効にする

私はカピバラとセレン(Firefoxの)を使用していると私は(セレンのjavascript.enabledプロパティを経由して)無効にはJavaScriptを使用して新しいドライバを登録してい

# spec/rails_helper.rb 
Capybara.configure do |config| 
    config.ignore_hidden_elements = true 
    config.default_driver = :selenium 
end 

Capybara.register_driver :disable_js do |app| 
    profile = Selenium::WebDriver::Firefox::Profile.new 
    profile["javascript.enabled"] = false 
    Capybara::Selenium::Driver.new(app, profile: profile) 
end 


# spec/features/siging_in_spec.rb 
context "JavaScript disabled", driver: :disable_js do 
    it "user can still sign in" do 
    # ... 
    # ... 
    end 
end 

機能仕様は、実際にJavaScriptを無効にするには失敗しています。テスト中にブラウザウィンドウがポップアップして、binding.pryで一時停止すると、JavaScriptが必要であることが分かっているアイテムをクリックして動作させることができます。

サイドノート:実際にFirefoxの設定に行きJavaScriptを無効にすると、テストに合格します。つまり、ブラウザに設定した設定を継承し、ドライバを登録するときに指定された設定を実際に使用していないように見えます。

これは正しいアプローチですか、私が逃したものはありますか?

ありがとうございます!

+0

代替オプションとして、ずっと前に私のために働いた['noscript'拡張機能(http://stackoverflow.com/a/27217451/771848)]を試してみてください。 – alecxe

答えて

4

それはセレンが真でそれをフリーズするので、ドライバを登録するときにjavascript.enabled設定を変更することはできません - これは、JS無効https://github.com/SeleniumHQ/selenium/issues/635とセレンとFirefoxを使用しようとしているため問題の行われていた - - https://github.com/SeleniumHQ/selenium/blob/master/javascript/firefox-driver/webdriver.json#L35、変更することはほとんどありません。 rack_testドライバでこれらの特定のテストを実行できますか?それとも十分な機能を提供していないのですか?

+0

問題を特定していただきありがとうございます。私はなぜそれが私の設定を覆し続けているのだろうと思っていた。ラックテストに関しては、応答テスト用のデスクトップとモバイルの両方の解像度もテストします(JS有効/無効、デスクトップ/モバイルの4つの組み合わせすべて)。 JSがモバイル解像度で無効になっている特定のケースでは、単にHTMLをレンダリングするだけなので、ウィンドウ幅の概念がないため、 'rack-test'で十分ではありません。私はポルターガイストやカピバラウェブキットを検討するだろうが、私はそれらの2人がJSを無効にするのに同様のハードルを持っていると信じている – user2490003

3

残念ながら、設定はprofile["javascript.enabled"] = falseno longer worksです。

JavaScriptを無効にするFirefoxアドオンをインストールする方法もあります。これは、Firefox 45 ESRと私のために働いた、セレンwebdriverを(2.53.4)、およびカピバラ(2.8.1):

profile.add_extension(File.expand_path('../quickjava-2.1.0-fx.xpi', __FILE__)) 

# Configure the extension to disable JavaScript by default. 
profile['extensions.thatoneguydotnet.QuickJava.startupStatus.JavaScript'] = 2 

# Disable loading the extension's first-run tab. 
profile['extensions.thatoneguydotnet.QuickJava.curVersion'] = '2.1.0' 

私はNoScriptのとQuickJsなど、いくつかの異なるアドオンを、評価したが、見つけることにしましたデフォルトでJavaScriptを無効にすることができる非常に簡単なアドオン - QuickJavaがそのトリックを行いました。あなたは(右クリックし、Firefoxを使用して、代わりに直接インストールのとして保存)ここでXPIファイルをダウンロードすることができます:https://addons.mozilla.org/en-US/firefox/addon/quickjava/versions/

ます。また、ソースでall of the addon's pref settingsを見ることができます。

関連する問題