Mam listę wyboru:
<select id="filter">
<option value="Open" selected="selected">Open</option>
<option value="Closed">Closed</option>
</select>
Kiedy wybieram, Closed
strona ładuje się ponownie. W tym przypadku pokazuje zamknięte bilety (zamiast otwartych). Działa dobrze, gdy robię to ręcznie.
Problem polega na tym, że strona nie ładuje się ponownie, gdy wybieram Closed
z Watir :
browser.select_list(:id => "filter").select "Closed"
Zwykle oznacza to, że jakieś zdarzenie JavaScript nie jest uruchamiane. Mogę odpalać wydarzenia z Watirem:
browser.select_list(:id => "filter").fire_event "onclick"
ale muszę wiedzieć, które zdarzenie odpalić.
Czy istnieje sposób, aby dowiedzieć się, które zdarzenia są zdefiniowane dla elementu?
javascript
events
watir
dom-events
browser-automation
Željko Filipin
źródło
źródło
Odpowiedzi:
Pomyślałem, że dodam, że możesz to zrobić również w Chrome:
Ctrl+ Shift+ I(Narzędzia deweloperskie)> Źródła> Punkty przerwania nasłuchiwania zdarzeń (po prawej).
Możesz również wyświetlić wszystkie zdarzenia, które zostały już dołączone, po prostu klikając prawym przyciskiem myszy element, a następnie przeglądając jego właściwości (panel po prawej stronie).
Na przykład:
Nie jestem pewien, czy jest tak potężny jak opcja firebug, ale wystarczył do większości moich rzeczy.
Inną opcją, która jest nieco inna, ale zaskakująco niesamowita, jest wydarzenie wizualne: http://www.sprymedia.co.uk/article/Visual+Event+2
Podświetla wszystkie elementy na stronie, które zostały powiązane, i zawiera wyskakujące okienka pokazujące wywoływane funkcje. Całkiem fajnie jak na zakładkę! Jest też wtyczka do Chrome, jeśli to bardziej lubisz - nie jestem pewien co do innych przeglądarek.
Anonimowy Andrew również zwrócił tutaj uwagę
monitorEvents(window);
źródło
Scripts
w narzędziach deweloperskich (lub inspektorze), musisz wejść do,Sources
a następnie spojrzeć na menu po prawej stronie.Wygląda na to, że Firebug (dodatek do Firefoksa) ma odpowiedź:
Log Events
Closed
(ręcznie)będzie coś takiego w zakładce Console:
Źródło: Firebug Wskazówka: rejestruj zdarzenia
źródło
Jeśli chodzi o Chrome, sprawdź monitorEvents () za pomocą interfejsu API wiersza poleceń.
monitorEvents(window);
Zobacz konsolę zalaną zdarzeniami
Są też inne przykłady w dokumentacji . Zgaduję, że ta funkcja została dodana po poprzedniej odpowiedzi.
źródło
monitorEvents($('#element').get())
unmonitorEvents(window)
Możesz użyć getEventListeners w konsoli programisty Google Chrome .
źródło