Le sélénium événement click() ne semble pas être toujours déclenché => résultats de délai d'attente?
Voici ce que je fais:
selenium.click("link=mylink");
selenium.waitForPageToLoad(60000);
//do something, then navigate to a different page
//(window focus is never changed in-between)
selenium.click("link=mylink");
selenium.waitForPageToLoad(60000);
Le lien "mylink" n'existe pas, la première invocation de la souris() fonctionne toujours. Mais le second clic() semble parfois fonctionne, parfois non.
Il ressemble à l'événement click() n'est pas déclenché à tous, parce que la page n'a même pas commencer à charger. Malheureusement, ce comportement est underterministic.
Voici ce que j'ai déjà essayé:
-
Mis plus de temps timeout
=> n'a pas aidé -
Attendre la présence d'un élément d'après le chargement d'une page
=> ne fonctionne pas non plus car la page n'a même pas commencer à charger
Pour l'instant j'ai fini par l'invocation de la souris() deux fois, donc:
selenium.click("link=mylink");
selenium.waitForPageToLoad(60000);
//do something, then navigate to a different page
//(window focus is never changed in-between)
selenium.click("link=mylink");
selenium.click("link=mylink");
selenium.waitForPageToLoad(60000);
Cela fonctionnera, mais ce n'est pas vraiment une bonne solution. J'ai aussi vu dans un autre forum où quelqu'un a suggéré d'écrire quelque chose comme un "clickAndWaitWithRetry':
try {
super.click("link=mylink");
super.waitForPageToLoad(60000);
}
catch (SeleniumException e) {
super.click("link=mylink");
super.waitForPageToLoad(60000);
}
Mais je pense que c'est pas non plus une bonne solution....
Toutes les idées/explications pourquoi l'événement click() est parfois pas déclenché?
- J'ai l'habitude d'utiliser 'setspeed" au lieu de temps quand j'ai envie de ralentir mon script pour certaines raisons.
Vous devez vous connecter pour publier un commentaire.
Parfois, apparemment au hasard, le Sélénium n'aime juste pas trop à sur certaines balises d'ancrage. Je ne suis pas sûr de ce qui la cause, mais ça arrive. Je trouve que dans ces cas w/une source de lien au lieu de faire
ne
Comme d'autres l'ont indiqué au-dessus de moi, j'ai, en particulier, ont des problèmes avec d'ancrage, les balises qui s'affichent comme suit:
J'ai fait le sélénium pendant un certain temps, et j'ai vraiment développé une aversion pour les waitForPageToLoad(). Vous pourriez envisager de toujours en attente pour l'élément en question existe.
Je trouve que cette méthode semble pour résoudre la plupart des problèmes bizarres que je tombe sur ce genre. L'autre possibilité est que vous avez un peu de javascript empêchant le lien de faire n'importe quoi lorsqu'il est cliqué la première fois. Il semble peu probable, mais la peine de vérifier.
J'ai juste essayé de WebDriver (Sélénium 2.0) et a constaté que WebElement#sendKeys(Clés.ENTREZ) fonctionne.
Sélénium événement click() ne semble pas être toujours déclenché => résultats de délai d'attente?
Essayer de sélénium.pause avant de Sélénium.cliquez sur commande. J'ai essayé tous les ci-dessus, mais aucun d'entre eux ne semble résoudre notre problème. Donc, finalement, nous avons obtenu une Magie de sélénium.pause qui a résolu le problème pour moi..
Espère que cela permettra de résoudre votre problème ainsi
Je suis en cours d'exécution sur cette question aujourd'hui aussi. De mes usages de cela, il semble que la suivante est la plus cohérente:
Pas exactement pourquoi ce serait. Mais il semble que si vous n':
Alors vous pourriez vous retrouver en attente d'une page qui a déjà été chargée (c'est à dire en fin de compte vous attendre à jamais).
J'ai fouillé dans le code source de Sélénium et trouvé cette pépite:
...
En gros, c'est de faire ce qui suit:
Cependant, comme le commentaire unis, la première chose nécessaire est d'utiliser l' :wait_for commande immédiatement après.
Et bien sûr... de commutation de la commande vous met dans le même attendre éternellement état.
Sans connaître tous les détails de Sélénium, il semble que le Sélénium doit s'inscrire la :wait_for déclencheur lorsqu'il est passé comme une option avec cliquez sur. Sinon, vous pourriez vous retrouver en attente pour toujours si vous en quelque sorte dire que le Sélénium pour attendre l'instant d'avant :wait_for est appelé.
Ici que ce travail:
J'ai eu le même problème avec le Sélénium 1.0.12 et Firefox 5.0, j'ai réussi à faire les tests automatisés fonctionnent de cette manière:
Il va comme ceci:
etc...
Il semble que le "waitForVisible" est déclenché trop tôt, c'est à dire avant que le gestionnaire d'événement sont branchés sur le contrôle (et donc en cliquant sur la commande n'a aucun effet). Si vous attendez 1 seconde, c'est assez pour brancher/activer les gestionnaires de clic...
La page ne s'ouvre pas correctement lorsque vous cliquez sur elle. Vérifier les différents éléments sur la page, pour être sûr que la page est chargée.
Aussi, d'attendre le lien de comparaître et d'être visible avant de cliquer sur elle.
Assurez-vous que vous pouvez augmenter le délai d'attente dans le bon endroit. Les lignes que vous avez posté sont:
Cette attente est que la page se charge, qui revient Après le clic. Mais le problème que vous décrivez est que c'est un échec lors de la tentative de faire du clic. Donc, assurez-vous d'augmenter l'attente Avant de celui-ci.
Si vous utilisez FireFox, assurez-vous que vous utilisez 3.6 ou version ultérieure.
WaitForPageToLoad utilise la variable javascript 'readyState", mais Firefox uniquement pris en charge cette 3.6. Les versions antérieures juste ne pas attendre
(voir
org.openqa.selenium.internal.seleniumemulation.WaitForPageToLoad
)Je vais avoir le même problème 🙁 avec selenium IDE 1.0.10 , phpunit 3.5 , selenium RC serveur 1.0.3
J'ai eu le même problème et a trouvé que j'ai pour obtenir le texte du lien. Je sais que ce n'est pas le moyen idéal pour le faire, mais j'ai la chance que mes liens sont uniquement le nom.
De code C#:
Essayez ceci: