Ich versuche, mit Capybara (2.1.0) einen Eintrag aus einem Dropdown-Menü auszuwählen.
Ich möchte nach Nummer auswählen (dh die zweite, dritte usw. Option auswählen).
Ich habe wie verrückt gegoogelt und alle möglichen Dinge ausprobiert, aber kein Glück.
Ich konnte es mit dem Wert auswählen:
find("option[value='4c430d62-f1ba-474f-8e8a-4452c55ea0a8']").click
Aber ich möchte diese Methode nicht verwenden, da sich der Wert ändert und mein Test spröde wird.
Der HTML-Code für das Dropdown-Menü lautet:
<td class="value">
<select name="organizationSelect" id="organizationSelect" class="required">
<option value="NULL">Choose...</option>
<option value="4c430d62-f1ba-474f-8e8a-4452c55ea0a8"> Institution1</option>
<option value="e1a4efa7-352d-410a-957e-35c8a3b92944"> Institution / test</option>
</select>
</td>
Ich habe es auch versucht:
option = find(:xpath, "//*[@id='organizationSelect']/option[2]").text
select(option, :from => organizationSelect)
Aber es führt zu diesem Fehler:
Ambiguous match, found 2 elements matching option "Institution" (Capybara::Ambiguous)
Wie kann ich also die erste, zweite, dritte usw. Option aus der Dropdown-Liste auswählen (mit Capybara)?
quelle
select('option_name', from: 'select_box')
. Wo die Werte sein können: ID, Name, zugehöriges Beschriftungselement. Weitere Informationen zu Capybara- und DSL-Optionen finden Sie hier .Aus irgendeinem Grund hat es bei mir nicht funktioniert. Also musste ich etwas anderes benutzen.
arbeitete für mich.
quelle
form
, es istfrom
. Hier ist die Dokumentation zu selectEine andere Möglichkeit besteht darin, eine solche Methode hinzuzufügen
quelle
find("select[name='organization_search[role]']").find(:option, text: :Staff).select_option
find(:css, "#search_field").find(:option, "Opp Last Name").select_option
, das ist der angezeigte Optionstext, hat bei mir funktioniert, der Wert der Option jedoch nicht.Leider hat die beliebteste Antwort bei mir nicht ganz funktioniert. Ich musste
.select_option
am Ende der Aussage hinzufügenselect("option_name_here", from: "organizationSelect").select_option
ohne das
select_option
wurde keine Auswahl durchgeführtquelle
.select_option
, da dieselect
Methode einen booleschen Wert zurückgibt?Um dem Stapel noch eine weitere Antwort hinzuzufügen (weil es anscheinend so viele Möglichkeiten gibt, dies abhängig von Ihrem Setup zu tun), habe ich das Literal ausgewählt
option
und darauf geklicktEs ist nicht sehr hübsch, aber es funktioniert: /
quelle
Keine der Antworten hat 2017 mit Capybara 2.7 für mich funktioniert. Ich habe "ArgumentError: falsche Anzahl von Argumenten (gegeben 2, erwartete 0)"
Aber das tat:
quelle
Es ist keine direkte Antwort, aber Sie können (wenn Ihr Server dies zulässt):
1) Erstellen Sie ein Modell für Ihre Organisation. extra: Es wird einfacher sein, Ihr HTML zu füllen.
2) Erstellen Sie eine Fabrik (FactoryGirl) für Ihr Modell;
3) Erstellen Sie eine Liste (create_list) mit der Fabrik;
4) Wählen Sie eine Organisation aus der Liste aus mit:
quelle
Hier ist der prägnanteste Weg, den ich gefunden habe (mit Capybara 3.3.0 und Chromtreiber):
wählt die 2. Option. Erhöhen Sie den Index nach Bedarf.
quelle
In Capybara können Sie nur verwenden , finden mit XPath
und Methode klicken
quelle