3

Ich habe eine App, die entworfen wurde, um immer noch funktionsfähig zu sein, wenn JavaScript deaktiviert ist, also wollte ich einige Spezifikationen schreiben, die diese Fälle abgedeckt haben.Deaktivieren von JavaScript bei der Verwendung von Capybara + Selenium

Ich bin mit Selen (Firefox) mit Capybara und ich bin einen neuen Treiber mit JavaScript deaktiviert Registrierung (über die Selenium javascript.enabled Eigenschaft)

# 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 

Die Feature-Spezifikationen scheitern JavaScript tatsächlich zu deaktivieren. Wenn das Browserfenster während des Tests auftaucht und ich es mit binding.pry pausiere, kann ich definitiv auf Elemente klicken, von denen ich weiß, dass sie JavaScript benötigen, und sie funktionieren.

Randnotiz: Wenn ich tatsächlich zu meinen Firefox-Einstellungen gehe und JavaScript deaktiviere, wird der Test bestanden. Es scheint also, dass es die Konfiguration übernimmt, die ich in meinem Browser eingestellt habe, und nicht die Konfiguration, die bei der Registrierung des Treibers angegeben wurde.

Ist dies der richtige Ansatz hier, oder gibt es etwas, das ich vermisst habe?

Danke!

+0

Als eine alternative Option, versuchen Sie die ['noscript' Erweiterung] (http://stackoverflow.com/a/27217451/771848) - arbeitete für mich vor langer Zeit. – alecxe

Antwort

4

Es ist nicht möglich, die javascript.enabled Einstellung zu ändern, wenn der Fahrer die Registrierung, da Selen es wahr friert - https://github.com/SeleniumHQ/selenium/blob/master/javascript/firefox-driver/webdriver.json#L35 - Dies wurde aufgrund von Problemen fertig mit dem Versuch, Selen und firefox mit JS deaktiviert https://github.com/SeleniumHQ/selenium/issues/635 zu benutzen - und es ist unwahrscheinlich geändert werden. Können Sie diese spezifischen Tests nur mit dem rack_test-Treiber ausführen? oder bietet es nicht genug Funktionalität?

+0

Vielen Dank für die Identifizierung des Problems! Ich habe mich gefragt, warum es meine Einstellung immer wieder außer Kraft setzte. Wie für Rack-Test - ich * auch * Desktop-und mobile Auflösungen für Responsiveness Tests (also alle 4 Kombinationen von JS aktiviert/deaktiviert und Desktop/Mobile). Für die speziellen Fälle, in denen JS bei der mobilen Auflösung deaktiviert ist, würde "Rack-Test" nicht ausreichen, da es kein Konzept der Fensterbreite hat, da es nur HTML rendert. Ich würde Poltergeist oder Capybara-webkit in Betracht ziehen, aber ich glaube, dass diese beiden ähnliche Hürden bei der Deaktivierung von JS haben – user2490003

3

Leider Einstellung profile["javascript.enabled"] = falseno longer works.

Eine Alternative ist die Installation eines Firefox-Addons, das JavaScript deaktiviert. Dieser arbeitete für mich mit Firefox 45 ESR, Selen-WebDriver (2.53.4) und Capybara (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' 

I ausgewertet ein paar verschiedene Addons, einschließlich NoScript und QuickJs, sondern entschied sich für eine finden sehr einfaches Addon, das JavaScript standardmäßig deaktivieren konnte QuickJava tat den Trick. Sie können die XPI-Datei hier herunterladen (Firefox verwenden, kopieren und Speicher unter statt direkt von der Installation): https://addons.mozilla.org/en-US/firefox/addon/quickjava/versions/

Sie können auch all of the addon's pref settings in der Quelle sehen.

Verwandte Themen