8
votes

Sélénium webdiver lance webdrivertimeoutException sur Remotewebelement.click ()

J'ai une erreur avec des clics difficiles à reproduire. 1-2 / 10000 clics se termine par openqa.selenium.webdriverTimeException code>. Il semble que l'élément n'a pas été cliqué et le pilote attend une certaine réaction.

Type: OpenQA.Selenium.WebDriverTimeoutException
Message: timeout: cannot determine loading status
from timeout: Timed out receiving message from renderer: -0.032
  (Session info: chrome=52.0.2743.116)
  (Driver info: chromedriver=2.23.409699 (49b0fa931cda1caad0ae15b7d1b68004acd05129),platform=Windows NT 6.3.9600 x86_64)
Stack trace:
   at OpenQA.Selenium.Remote.RemoteWebDriver.UnpackAndThrowOnError(Response errorResponse)
   at OpenQA.Selenium.Remote.RemoteWebDriver.Execute(String driverCommandToExecute, Dictionary`2 parameters)
   at OpenQA.Selenium.Remote.RemoteWebDriver.set_Url(String value)
   at OpenQA.Selenium.Remote.RemoteNavigator.GoToUrl(String url)


12 commentaires

Ce serait génial si vous collez le code.


@amitbobade Il arrive dans des endroits à proximité que j'appelle iwebelement.click () , mais très rare et imprévisible.


Frais. Quelle est la version chromedriver?


Je ne me souviens pas exactement mais je pense que je suis confronté à un problème similaire, puis j'ai rétrogradé la version Chromedriver à 2.18. Mais la dernière version 2.23 de Chromedriver est disponible maintenant. Essayez de mettre à niveau votre version actuelle du chromedriver en 2.23. Espérons que cela aidera.


@amitbobade merci. Ma version 2.22 actuelle, je passerai à 2.23.


Frais. Faites-moi savoir comment ça se passe.


@amitbobade Mettre à niveau n'aide pas. Je reçois toujours cette erreur dans de rares occasions, cette ruine signale un peu


Ohh. Avez-vous essayé de réduire le chromedriver à 2,18?


Essayez de déboguer votre test et assurez-vous qu'il ne s'agit pas de votre élément n'est pas visible pour le moment où vous cliquez dessus. Assurez-vous que la page est chargée et les demandes AJAX sont exécutées.


@Deniskoreyba Les éléments vont bien. D'autre part, je devrais obtenir WebDriveException, InvalidElementStateException ou quelque chose comme ça. Dans le navigateur, on dirait qu'il attend quelque chose, mais rien ne se passe.


@Kovpaevalexey Vous voulez donc dire que votre page n'est pas dans un processus de chargement et des éléments ne sont chargés par aucun ajax. Et l'erreur se produit même en mode débogage?


@Deniskoreyba Ce problème est rare et incompatible à l'attraper en débogage. Cela arrive ~ 3-5 fois pour 1000-2000 cas de test * portail. Je viens de trouver parfois la page qui a coincé quelque chose. Par exemple, l'onglet dans Chrome a déjà une nouvelle URL mais une ancienne page et il attend 300 secondes puis soulève cette exception


3 Réponses :


1
votes

Little Peak dans le code source de sélénium révélera que chaque action sur la diffoiement ou infecte toute interaction sélénium invoquera exécuté (pilote de chaîne, carte Paramètres) Classe RemotewebDriver

Ceci exécutera la commande via le Commandexecuteur interface qui est implémentée par différents pilotes

ChromeRiver implémente également cela et vous voyez cette erreur en raison d'un bogue que l'équipe de Chrome est au courant et travaille. S'il vous plaît vérifier les détails de bogue ici.

Le taux d'erreur est tombé avec ChromeRiver V2.23 mais sa situation toujours, mais rarement

bug # 1362

bug # 817

bug # 1224


0 commentaires

0
votes

a résolu ceci en réduisant degré de parallélisme de mon coureur de test de 30 à 10h, il semble que la dépassement de la CPU provoque des demandes de ne pas atteindre les pilotes Web pour une raison quelconque.


3 commentaires

Bonjour - Avez-vous changé ce réglage? Je suis confronté à un problème similaire


Salut, @ctrl_alt_defeat. J'ai utilisé mon coureur de test personnalisé pour la gestion de l'exécution de WebDriver simultanée, alors je viens de réduire degré de parallélisme pour résoudre ce problème et cela a fonctionné pour moi. Probablement chromedriver n'est pas destiné à être utilisé dans des systèmes hautement concurrents.


J'utilise Essai Explorer dans VS ENT 2017. Tous les tests passent plus de 5 minutes de temps. Les tests fonctionnent bien dans IE. C'est un problème unique dans Chrome. Mes tests sont dans le cadre de Nunit et écrit en C #. Voir le code ci-dessous. pilote.manage (). TIMESOUTS (). PAGELOAD.ADD (System.TimesPan.dedde secondes (700)); Driver.Manage (). Timeouts (). Implicitwait = Timespan.fromseconds (700)



0
votes

J'ai trouvé la cause première de la question, du moins pour mon cas. Nous exécutions les tests de sélénium sur une machine Jenkins qui utilisait un serveur proxy. Nous ne sommes surtout que lorsque nous avons permis de connecter à tous. C'est un fait connu que les webockets ne fonctionnent pas avec les proxies et le chromedriver utilise des webkets pour chercher des journaux de navigateur. Nous avons donc désactivé le proxy et le problème est résolu.


0 commentaires