2010-07-15 4 views
2

Donc j'essaie de faire la conversion en Sélénium 2, mais je semble avoir un problème si je vais à http://website.com, Selenium ne peut pas trouver les éléments de ma forme aspx. Je dois avoir Selenium aller directement au http://website.com/form.aspx. Ce n'est pas horrible parce que je peux m'assurer que les formulaires fonctionnent, mais idéalement, je voudrais que tout soit terminé du point de vue des utilisateurs. Quelqu'un d'autre a-t-il eu ce problème?Sélénium 2 ne peut pas trouver l'élément ID sauf si je vais directement au fichier .aspx

Répondre

4

Il semble qu'il y ait une redirection de la page principale par défaut à la forme.aspx sur votre site. Je pense que WebDriver attrape la fin du chargement de la page principale qui redirige ensuite vers le formulaire, mais WebDriver ne l'attrape pas.

Je pense que vous pouvez introduire un délai avant que les éléments à partir de trouver, ou vous pouvez utiliser PageFactory avec AjaxElementLocatorFactory qui permettra à votre pilote d'attendre jusqu'à ce que les contrôles apparaissent vraiment, mais je ne suis pas sûr si elle est disponible pour

C#
1

J'ai eu ce problème aussi, il est dû à la redirection, et que la commande waitFor * ne fonctionne pas très bien avec les redirections. Il n'attendra jamais 2 pages (ce dont nous avons besoin ici), mais si vous mettez 2 temps consécutifs (ce qui est en théorie la bonne chose à faire), souvent le 2ème sera suspendu. Il semble que ce soit une sorte de condition de course car il est imprévisible, 90% du temps il semble se bloquer alors

Donc ce que j'ai fait était juste de tourner dans une boucle jusqu'à ce que j'ai vu un signal sur la page après la redirection que je devrait voir. Vous pouvez également avoir le signal que vous recherchez pour le test réel. Ma solution, un bloc court de perl, que je suis sûr que vous pouvez traduire en C#:

$sel->open('/some/page/that/will/redirect/us'); 
$sel->wait_for_page_to_load("30000"); #wait for the redirect to hit 
do {  
    $sel->pause(50); #now spin while we're in no-mans land 

    #until you spot what you need: 
    last if $sel->is_text_present('This is the Real Home Page'); 
} while(1); 

#carry on.... redirect is completed and page is loaded 

Un bonus heureux de ce que le journal de l'historique des commandes compte les millisecondes sur « commande même (de 99ms): xyz "pendant qu'il tourne, vous laissant savoir que tout est vivant et sain pendant que la redirection suit son cours.

Questions connexes