2016-05-10 9 views
1

Ich schreibe die Testfälle mit Capybara (2.4.4), Gurke (1.3.19), Gurken-Schienen (1.4.2) für die Schienen 4 Anwendung. Die Anwendung verfügt über eine Dropdown-Box, die onchange die jquery-Funktion aufruft. Ich hatte zeigtGurke - Capybara - Jquery -Dropdown-Wert ruft nicht OnChange

save_and_open_screenshot 

, die eine Debug-Anweisung setzen, dass der Text in dem Auswahlkästchen aktiviert ist, aber es nicht das Ereignis onchange

$("#engagement_list").on("change", function() {} 

Nach der Auswahl des Textes in dem Dropdown-Feuer hat ich hatte setzen

find('#engagement_list').native.send_keys(:return) 

Aber es hat nicht die Onchange-Funktion aufgerufen. In meiner Gurken-Feature-Datei verwende ich @ javascript tag.Wissen Sie, was falsch sein kann?

+0

Welche Version von Poltergeist verwenden Sie? Auch Capybara 2.4.4 ist jetzt ziemlich alt, möglicherweise möchten Sie auf eine neuere Version aktualisieren. Wie wählst du den Text im Drop-down aus? Eine andere Sache, die versucht wird, ist, in ein anderes Element auf der Seite zu klicken und zu sehen, ob das Änderungsereignis auslöst. –

+0

Ich habe versucht, andere Elemente auf der Seite auszuwählen, die das Änderungsereignis nicht ausgelöst haben. Eine Sache, die ich bemerkte, ist, dass wir die Testfälle auf den Mocks ausführen, wo es das Änderungsereignis nicht auslöst. Ich habe versucht, ähnliche Gurken-capybara Tests auf der Anwendung im Server ausgeführt. Es funktionierte. Ich weiß nicht, was mit der verspotteten Version des Codes falsch gelaufen ist. –

Antwort

0

Versuchen Sie, die Option richtig auszuwählen. Unter der Annahme, Option [0] wird eine Meldung "Bitte wählen", hier einige RSpec:

def select_third_option(id) 
    third_option_xpath = "//*[@id='#{id}']/option[3]" 
    third_option = find(:xpath, third_option_xpath).text 
    select(third_option, :from => id) 
end 

Wählen Sie sollten das onchange Ereignis auslösen.

+0

Wenn Sie das Optionselement bereits gefunden haben, können Sie einfach #select_option aufrufen - also in Ihrem Beispiel 'find (: xpath, third_option_xpath) .select_option' - müssen Sie nicht zurückgehen und' # select' aufrufen, was tun Sie einfach einen anderen Fund in Ihrem Dokument, Verschwendung Zeit, und am Ende Aufruf select_option sowieso –

+0

Ich wähle die Option von page.select '8832483 | Goofy App 1 | IMAP-12341 ',: von =>' Engagementliste ' –

0

Trough Capybara Sie lösen die Änderung Ereignis wie hier:

select my_value, from: "My select Label" # select in order after submitting a form to send it to my server 
page.execute_script("$('#engagement_list').trigger('change')") 

Capybara prof