2017-01-31 3 views
0

Guten Tag alle,ReactJS DropDown und PhantonJS Headless spielen nicht schön zusammen

Ich bin derzeit versucht, Gurken Tests auf einer reactjs Komponente, Drop-Down-Suche Auswahl, laufen in kopflos Modus auszuführen, PhantonJS verwenden, aber es verursacht eine seltsame Situation, die mich komplett von diesen Tests abhält.

Unter Verwendung der folgenden reactJs Drop-down-http://jedwatson.github.io/react-select/, es ist die „‚Github Benutzer (Async mit fetch.js)‘“

Die aktuelle Ausgabe, die entsprechend ist, wenn die Szenarien wird es viertes Beispiel testen, es scheitert aber der gleiche Code wird verwendet, um die ersten drei Tests zu bestehen.

Ich dachte, es war das vierte Beispiel, also änderte ich es mit anderen Werten und es schlägt immer noch im vierten Schritt fehl.

Dies ist der Code verwendet, um den Wert in der Dropdown-Suche

find(".Select").trigger("click") 

fix_overlap = %{ $('.Select-placeholder').css('z-index', -99999) } 
page.execute_script(fix_overlap) 

find(".Select .Select-input input").native.send_keys(with) 
find(".Select-menu-outer", text: with, visible: :all, match: :first).click 

Die reagieren einzugeben Steuer async Aufruf für die Eingangsdaten von einem API-Endpunkt suchen tut.

Ich kann den Test in einem Browser ohne Probleme ausführen.

Der Fehler, der aus dem Test zurückgegeben wird, ist, dass ich den Wert in der Dropdownliste nicht finden kann.

Ich habe die Optionen für die Umwelt-Setup hinzugefügt, wenn ich Poltergeist Registrierung bin,

options = {:js_errors => false, phantomjs_options: ['--debug=true'], debug: false } 
Capybara.register_driver :poltergeist do |app| 
    Capybara::Poltergeist::Driver.new(app, options) 
end 

zu sehen, ob es ein interner Fehler ist, die in der Debug-Konsole nicht angezeigt wird.

Ich habe eine page.save_screenshot gemacht, um den Zustand kurz vor dem Fehler zu sehen und das Dropdown hat den richtigen Wert.

Fragen

Gibt es keine anderen Optionen, die mehr Informationen/Fehler hinzugefügt werden können, zeigen?

Hat jemand dieses Problem schon einmal erlebt?

Ich bin offen für alle Vorschläge, um dieses seltsame Verhalten zu beheben.

Extra Details

gem 'Poltergeist', '= 1.9.0' Juwel 'Gurke', '~> 2.0'

Antwort

0

Für die "Cities (Large Dataset)" Beispiel auf die verlinkte Seite wählt der folgende Code den „New York“ Eintrag für mich, ohne trigger zu verwenden greifen, execute_script oder native

with = "New York" 
section = find('.section', text: 'Cities (Large Dataset)') 
section.find('.Select').click 
section.find('.Select-placeholder').send_keys(with) 
section.find('.VirtualizedSelectOption', exact_text: with).click 

dass die la verwendet Testen Sie Poltergeist und Capybara.Ohne den neuesten Capybara müssten Sie wahrscheinlich eine Regex als Textoption in der letzten Zeile anstelle der Option: exact_text übergeben (sonst erhalten Sie mehrere Responses)

Für das Beispiel "Contributors (Async)"

with = 'Craig Dallimore' 
section = sess.find('.section', text: 'Contributors (Async)') 
section.find('.Select').click 
section.find('.Select-input input').send_keys(with.gsub(' ', '') 
section.find('.Select-option', exact_text: with).click 

wählt jemand

+0

ich habe eine Änderung auf die Frage, wie ich die falsche Dropdown –

+0

aufgeführt habe ich versucht, Ihre Methode @Thomas Walpole, die für die ‚Städte (Large Dataset)‘ große Arbeit, aber nicht scheinen die für die Github-Benutzer (Async mit fetch.js) zu arbeiten. Es scheint ein Problem zu haben, das die Gründung der ". VirtualizedSelectOption 'Wert. –

+0

Capybara :: ElementNotFound: Kann ".VirtualizedSelectOption" mit exaktem Text craig-davis nicht finden ./features/step_definitions/test_peter.rb:11:in '/^Ich habe in Daten $/' ./features/ eingegeben online_v2/create_ea_business.feature: 90: in 'Und ich habe in Daten eingegeben ' ./features/online_v2/create_ea_business.feature:86:in' Und ich habe in Daten eingegeben' 1 Szenario (1 fehlgeschlagen) 2 Schritte (1 fehlgeschlagen, 1 bestanden) –

Verwandte Themen