2010-05-12 17 views
6

Mam przycisk na stronie, która jest używana jako łącze do innej strony. Kiedy użytkownik kliknie przycisk, zostaje przekierowany na właściwą stronę.Selen: Jak kliknąć element przycisku HTML?

Używam rozszerzenia Selenium dla PHPUnit i chciałbym przetestować, czy przycisk poprawnie przekierowuje użytkownika. Oto HTML Próbuję testu:

<button onclick="window.location='/sponsor';" value="Continue" type="button" id="sponsorContinue" name="sponsorContinue">Continue</button> 

Próbowałem wiele różnych podejść do kliknięcia przycisku, ale nie wydaje się uzyskać żadnej z nich do pracy:

$this->click("//button[@id='sponsorContinue']"); 

To polecenie wykonuje i nie generuje żadnych błędów, ale strona nie jest przekierowywana. Działa dobrze, gdy ręcznie kliknę przycisk. Co powinienem zrobić?

+0

Ten fragment działa dobrze dla mnie. Z jakiej przeglądarki/systemu operacyjnego korzystasz? –

Odpowiedz

2

Oto problem ... HTML jest nieprawidłowy i zmusza użytkowników do korzystania z javascript, aby przejść do następnej strony. Zamiast tego użyj tego kodu HTML. Jest czystszy i nie polega na javascript.

<form method="get" action="/sponsor"> 
    <button type="submit" id="sponsorContinue">Continue</button> 
</form> 

Ponadto, będzie to teraz działa:

$this->click('sponsorContinue'); 

Jednakże, jeśli starasz się uzyskać window.location do pracy, see this question.

+0

+1 dla rozwiązania bez Javascript. Ale wciąż dlaczego Selenium nie uruchamia zdarzenia onclick? –

+1

Zgadzam się na zmianę przycisku HTML w tym przypadku. Jeśli jednak chcesz w przyszłości uruchamiać wydarzenia, Selenium pozwala ci to zrobić z fireEvent! – Zugwalt

+0

@Zugwalt Nie mogę uruchomić FireEvent w Safari 4 – Andrew

Powiązane problemy