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é:

  1. Mis plus de temps timeout

    => n'a pas aidé

  2. 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.
InformationsquelleAutor blackicecube | 2009-03-11