Próbuję wybrać pozycję z menu rozwijanego za pomocą Kapibary (2.1.0).
Chcę wybierać według numeru (czyli wybrać drugą, trzecią itd. Opcję).
Szukałem w Google jak szalony, próbując różnych rzeczy, ale bez powodzenia.
Udało mi się go wybrać za pomocą wartości:
find("option[value='4c430d62-f1ba-474f-8e8a-4452c55ea0a8']").click
Ale nie chcę używać tej metody b / c, wartość jest czymś, co się zmieni i to sprawi, że mój test będzie kruchy.
Kod HTML listy rozwijanej to:
<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>
Próbowałem też tego:
option = find(:xpath, "//*[@id='organizationSelect']/option[2]").text
select(option, :from => organizationSelect)
Ale skutkuje tym błędem:
Ambiguous match, found 2 elements matching option "Institution" (Capybara::Ambiguous)
Jak więc mogę wybrać pierwszą, drugą, trzecią itd. Opcję z listy rozwijanej (używając Kapibary)?
źródło
select('option_name', from: 'select_box')
. Gdzie wartościami mogą być: id, nazwa, powiązany element etykiety. Możesz przeczytać więcej o opcjach Kapibara i DSL tutaj .Z jakiegoś powodu to nie zadziałało. Musiałem więc użyć czegoś innego.
pracował dla mnie.
źródło
form
, to jestfrom
. Oto dokumentacja na temat selectinną opcją jest dodanie takiej metody
źródło
find("select[name='organization_search[role]']").find(:option, text: :Staff).select_option
find(:css, "#search_field").find(:option, "Opp Last Name").select_option
, czyli wyświetlany tekst opcji, zadziałał u mnie, podczas gdy wartość opcji nie.Niestety najpopularniejsza odpowiedź nie działała w moim przypadku całkowicie. Musiałem dodać
.select_option
na końcu oświadczeniaselect("option_name_here", from: "organizationSelect").select_option
bez
select_option
, żaden wybór nie był wykonywanyźródło
.select_option
, skoroselect
metoda zwraca wartość logiczną?Aby dodać jeszcze jedną odpowiedź do stosu (ponieważ podobno jest tak wiele sposobów na zrobienie tego w zależności od twojej konfiguracji) - zrobiłem to, wybierając
option
element dosłowny i klikając goNie jest zbyt ładna, ale działa: /
źródło
żadna z odpowiedzi nie zadziałała dla mnie w 2017 roku z kapibarą 2.7. Otrzymałem „ArgumentError: zła liczba argumentów (dane 2, oczekiwano 0)”
Ale to zrobiło:
źródło
Nie jest to bezpośrednia odpowiedź, ale możesz (jeśli pozwala na to Twój serwer):
1) Utwórz model dla swojej Organizacji; dodatkowo: łatwiej będzie wypełnić swój kod HTML.
2) Utwórz fabrykę (FactoryGirl) dla swojego modelu;
3) Utwórz listę (create_list) z fabryką;
4) „wybierz” (przykład) organizację z listy zawierającą:
źródło
Oto najbardziej zwięzły sposób, jaki znalazłem (przy użyciu kapibary 3.3.0 i sterownika chromowego):
wybierze drugą opcję. Zwiększ indeks według potrzeb.
źródło
W Kapibara możesz używać tylko znajdowania z xpath
i kliknij metodę
źródło