2010-05-12 13 views
6

J'ai un bouton sur la page qui est utilisé comme lien vers une autre page. Ainsi, lorsque l'utilisateur clique sur le bouton, il est redirigé vers la bonne page.Selenium: Comment cliquer sur un élément de bouton HTML?

J'utilise l'extension Selenium pour PHPUnit et je voudrais tester que le bouton redirige correctement l'utilisateur. Voici le code HTML que je suis en train de tester:

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

J'ai essayé beaucoup de différentes approches de cliquer sur le bouton, mais je ne peux pas sembler obtenir l'un d'eux pour travailler:

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

Cette commande s'exécute et ne renvoie aucune erreur, mais la page n'est pas redirigée. Cela fonctionne bien lorsque je clique manuellement sur le bouton. Que devrais-je faire?

+0

Cet extrait fonctionne très bien pour moi. Quel navigateur/OS utilisez-vous? –

Répondre

2

Voici le problème ... le HTML est erroné, et il oblige les utilisateurs à utiliser javascript pour passer à la page suivante. Utilisez ce HTML à la place. C'est plus propre et ne repose pas sur javascript.

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

En outre, cela va maintenant travailler:

$this->click('sponsorContinue'); 

Cependant, si vous essayez d'obtenir window.location travailler, see this question.

+0

+1 pour la solution sans Javascript. Mais pourquoi Selenium ne déclenche-t-il pas l'événement onclick? –

+1

Je suis d'accord avec le changement du bouton HTML dans ce cas. Cependant, si vous devez déclencher des événements dans le futur, Selenium vous permet de faire cela avec fireEvent! – Zugwalt

+0

@Zugwalt Je ne suis pas en mesure de faire fonctionner fireEvent dans Safari 4 – Andrew

Questions connexes