2010-05-12 4 views
6

Ho un pulsante sulla pagina che viene utilizzato come collegamento a un'altra pagina. Quindi, quando l'utente fa clic sul pulsante, vengono reindirizzati alla pagina giusta.Selenium: come fare clic su un elemento pulsante HTML?

Sto usando l'estensione Selenium per PHPUnit e vorrei verificare che il pulsante stia reindirizzando correttamente l'utente. Ecco il codice HTML che sto cercando di prova:

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

Ho provato un sacco di diversi approcci per fare clic sul pulsante, ma io non riesco a ottenere qualsiasi di loro di lavorare:

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

Questo comando viene eseguito e non genera errori, ma la pagina non viene reindirizzata. Funziona bene quando faccio clic manualmente sul pulsante. Cosa dovrei fare?

+0

Questo snippet funziona correttamente per me. Quale browser/sistema operativo stai usando? –

risposta

2

Ecco il problema ... l'HTML è sbagliato e obbliga gli utenti a utilizzare javascript per passare alla pagina successiva. Usa invece questo HTML. È più pulito e non si basa su javascript.

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

Inoltre, questo ora lavorare:

$this->click('sponsorContinue'); 

Tuttavia, se si sta cercando di ottenere window.location al lavoro, see this question.

+0

+1 per la soluzione senza Javascript. Ma ancora perché il selenio non sta attivando l'evento onclick? –

+1

Sono d'accordo con la modifica del pulsante HTML in questo caso. Tuttavia, se hai bisogno di sparare eventi nel futuro, Selenium ti consente di farlo con fireEvent! – Zugwalt

+0

@Zugwalt Non riesco a ottenere fireEvent per funzionare in Safari 4 – Andrew