2013-05-13 5 views
5

Piszę niektóre testy funkcji przy użyciu Capybara, dla stron zawierających wiele odświeżeń javascript (adres URL pozostanie taki sam, gdy użytkownik kliknie "kontynuuj" przycisk, ale ukryta zawartość zostanie wyświetlona, ​​a wyświetlana zawartość zostanie ukryta, tak że istnieje OGROMNA ilość tekstu/selektorów/itd. w dowolnym punkcie "na" stronie, ale ukryta przed użytkownikiem).Nie mogę wypełnić żadnych ukrytych elementów w Capybara, gdy ignore_hidden_elements jest prawdziwe

Aby przetestować tę funkcjonalność, chcę, aby opcja konfiguracji ignorowania_aplików_czarnych Capybara była prawdziwa, ponieważ najlepiej reprezentuje to doświadczenie użytkownika.

Ale są też pewne wtyczki jQuery na stronie, które używają fantazyjnych grafik do wypełniania podstawowych ukrytych elementów HTML, i chciałbym użyć Capybara, aby wybrać prawidłowe wartości dla tych elementów, zamiast próbować użyć JavaScript, aby ręcznie symulować użytkownika wchodzącego w interakcje z elementem.

W szczególności próbuję przetestować wybrane pola, które mają wyświetlać: brak i są wypełnione wtyczką jQuery, gdy użytkownik wchodzi w interakcje z nimi. Chciałbym móc to zrobić:

select('value', from: 'select_box') 

, ale pole wyboru jest ukryte.

Więc próbowałem to:

select('value', from: 'select_box', visible: false) 

ale to nie działało. Nie chciałem, aby ignore_hidden_elements zmieniały się na false, ponieważ to źle symuluje użytkownika, a ja musiałbym wrócić i dodać "visible: true" do wielu linii testowania.

Każdy pomysł, jak to zrobić? Czy istnieje opcja, która bardziej starannie anuluje ignore_hidden_elements?

EDIT - Po odpowiedzi Andrey za zwróciłem ignore_hidden_elements false, a potem zrobił to samo kapibary wybrać próbę jak poprzednio:

select 'value', from: 'select_box_id' 

i, jak magia, to działało. Kiedy ponownie zmienić ignore_hidden_elements na true i spróbować tej linii:

select 'value', from: 'select_box_id', visible: false 

otrzymuję ten błąd:

Failure/Error: select 'value', from: 'select_box_id', visible: false 
    Capybara::ElementNotFound: 
     Unable to find select box "select_box_id" 

jakaś szansa to nie jest błąd? Czy powinienem to zgłosić?

+0

Jeśli 'wybierz ('wartość', z: 'select_box', visible: false)' nie działa od 'select ('value', from: 'select_box')' with 'Capybara.ignore_hidden_elements = false' również nie działa. Jeśli to działa, należy go uznać za błąd w Capybara. Opcje 'ignore_hidden_elements' i' visible' wpływają na ten sam parametr. –

+0

Potem myślę, że to błąd. Szczegóły powyżej. – Sasha

+0

Jaka jest twoja wersja Capybara? –

Odpowiedz

1

To błąd w Capibara 2.0.x. Here is a test case, która jest odtwarzalna w wersji 2.0.x, ale nie w wersji 2.1.

Jednak opiekunowie Capybara-Webkit nie wydali jeszcze wersji kompatybilnej z Capybara 2.1.

Możliwe rozwiązania dla Ciebie:

  • użycie Kapibara 2.1-zgodny sterownik
  • użyj Capybara-Webkit z master branch na github
  • nie próbuj wchodzić w interakcje z niewidocznymi elementami (to nie działa w Selenium, wierzę więc, że możliwość interakcji należy uznać za błąd w Capybara- Webkit)
Powiązane problemy