Ich habe ein Schienenprojekt mit capybara 2.6.2
und capybara-webkit 1.8.0
.Capybara kann keinen Link zu einem Modal finden, das sich beim Drücken der Taste ändert
ich ein Feature-Test für eine Strömung auf meiner Seite schreibe, die wie folgt aussieht:
scenario "Buyer creates a seller profile", :js => true do
click_link("SELL ON MYSITE",match: :first)
expect(page).to have_text("Reach thousands of customers in your area")
click_link("Create an Activity",match: :first)
expect(current_path).to eql (new_seller_profile_path)
fill_in "seller_profile[business_name]", :with => "Test company"
fill_in "seller_profile[business_email]", :with => "[email protected]"
fill_in "seller_profile[business_phone_number]", :with => "07771330510"
fill_in "seller_profile[business_description]", :with => "This is a test company"
find('label[for="social"]').click
find("#facebook-placeholder").click
fill_in "seller_profile[business_facebook_url]", :with => "https://www.facebook.com/test"
click_button("CREATE AN ACTIVITY")
------ diese Schaltfläche öffnet einen modal, nachdem die Seite Änderungen ------ -
fill_in "seller_profile[requested_postcode]", :with => "EH21 8PB"
click_button("Submit")
save_and_open_screenshot
------ das ist, wo es schief geht -------
click_link("Continue")
expect(page).to have_text("Choose the type of activity that you want to create")
end
Die click_link weiterhin mit Fehler fehlschlägt:
Failure/Error: click_link("Continue")
Capybara::ElementNotFound:
Unable to find link "Continue"
Der Link tatsächlich existiert - wenn Sie auf der Schaltfläche einige Javascript ausführen einreichen klicken, die den Inhalt der modalen ändern einigen neuen Text und eine neue Schaltfläche angezeigt werden soll. Allerdings wartet click_link aus irgendeinem Grund nicht auf das Modal, es schlägt sofort fehl.
mit einem save_and_open_screenshot Aufruf haben wir diese Situation als modal sehen javascript noch auszuführen hat, wie wir noch die Submit-Button sehen:
Interessanterweise ist die Maus scheint nicht auf das Senden Schaltfläche, wie es sollte es gerade geklickt haben?
Wie kann ich die click_link warten zu lassen, bis die Taste erscheint weiter ?!
Dies ist das Javascript, das zu dem modalen, die sie auf der Presse von ‚Senden‘ hinzugefügt ausführt ändert:
ein paar Betten in Scheinbar$('#gate .modal-body .intro').text('Congratulations, we are available in your location, please continue to create your activity.');
$('#gate .modal-footer').append('<a class="btn btn-lg btn-primary" href="/events/new/">Continue</a>');
Haben Sie versucht, so etwas wie [das] (http://stackoverflow.com/a/23555725/634576) ? –
also schlägst du vor, dieses wait_until hinzuzufügen und es zu übergeben? – RenegadeAndy
Ist der Text auf der Schaltfläche "Weiter" oder ist es wie beim Senden der Schaltfläche in Großbuchstaben "WEITER", eventuell über CSS-Text-Transformation? –