Jusqu'à ce que mon Google Chrome ne soit pas mis à jour vers la version 78, mon code fonctionnait bien. J'ai également mis à jour le chromedriver vers la version 78.0.3904.70. Je ne peux donc plus trouver WebElement avec id = 'plugin' en utilisant Selenium WebDriver et Java:
<html>
<div id="content">
<embed id="plugin" type="application/x-google-chrome-pdf" src="http://??????????/offer_printed.php?printable=yes&reanudar=&>
</div>
</html>
À part cette partie, mes tests fonctionnent bien. Je n'ai jamais eu de problème similaire auparavant. J'ai également essayé de trouver WebElement id = 'content' mais je reçois la même erreur.
WebDriverWait wait = new WebDriverWait (driver, 90);
WebElement scrollvalid = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("plugin")));
scrollvalid.sendKeys(Keys.PAGE_DOWN); scrollvalid.sendKeys(Keys.PAGE_DOWN);
Mon script d'automatisation devrait trouver l'élément PDF et faire défiler la page vers le bas. Au lieu de cela, je reçois cette erreur: org.openqa.selenium.TimeoutException: expiration après 90 secondes d'attente pour la visibilité de l'élément localisé par By.id: plugin
Quelqu'un est-il confronté à un problème similaire? Merci d'avance.
Thread.sleep
endroits où j'avais des attentes implicites ou explicites avant cette mise à jour.Réponses:
J'ai rencontré le même problème.
Apparemment, Chrome se met automatiquement à jour. Hier (29 octobre 19), mon ChromeDriver a commencé à se plaindre qu'il n'était pas compatible avec Chrome 78. J'ai mis à jour le pilote vers la version 78. J'ai commencé à obtenir des exceptions org.openqa.selenium.NoSuchElementException aléatoires lorsque j'essayais de trouver des éléments dont j'avais confirmé la présence. Les findElement [s] fonctionnent également lorsque j'ai utilisé des points d'arrêt. J'ai également essayé des attentes implicites, mais avec un succès limité.
J'ai essayé la solution ChromeOption de zsbappa mais pas de joie.
Google rend difficile l'obtention d'anciennes versions de Chrome, mais j'ai trouvé la version 76 sur https://www.neowin.net/news/google-chrome-76-offline-installer/ . Attention, le programme d'installation en ligne installe la dernière version. Je suis revenu au pilote pour 76 et tout va bien. Tous mes tests Selenium fonctionnent à nouveau.
Ma conclusion est que le Chrome 78 et son pilote associé ont une condition de concurrence où Selenium tente d'interroger la page Web avant qu'elle ne soit terminée.
la source
Nous avons rencontré un problème similaire avec Chrome 78.0.3904.7, Chromedriver 77/78, Python Selenium 3.141.0.
Dans nos tests automatisés Python Selenium, nous avons vu plusieurs échecs où il semble que des clics sur les éléments ne se sont pas produits. Encore plus étrange, il semble que l'élément soit devenu actif (comme s'il allait être cliqué) mais l'événement de clic réel ne s'est jamais produit. En conséquence, les commutateurs de page, etc. ne se produisent pas, ce qui entraîne diverses défaillances en aval.
Par un processus de traînée et d'erreur, nous avons constaté que l'utilisation de la fonction standard .click () n'est plus fiable:
Mais l'utilisation des chaînes d'action semble fiable:
On ne sait pas pourquoi c'est le cas. Les échecs ont commencé dès la mise à niveau vers Chrome 78.0.3904.7. Nous utilisons Chromedriver 77.0.3865.90 mais les mêmes tests passent de manière fiable sur les versions de Chrome 77.x, il semble donc que quelque chose ne va pas ou a changé dans Chrome 78.
la source
En ajoutant l'argument suivant, j'ai résolu mon problème.
la source
J'ai rencontré le même problème lorsque j'essayais d'accéder à un onglet à l'intérieur d'un iframe, cela fonctionnait bien sur la version 76. Maintenant qu'il s'est mis à jour en 78, il échoue. Avoir essayé les attentes, les attentes implicites, le sommeil, localiser les éléments en utilisant xpath, CSS, id, changer de contexte, faire défiler jusqu'à view, etc., sans succès. J'utilise Windows 10, 1809. Je ne sais pas si cela se produit dans d'autres systèmes d'exploitation.
Voici la question que j'ai posée:
Problème d'utilisation des localisateurs chromedriver 78.0.3904.70
la source
J'ai confirmé hier que ce problème ne semble se manifester que lorsqu'un élément est contenu dans un iframe. Dans ces cas, l'iframe est bien situé. Cependant, la tentative de localisation d'un élément Web à l'aide du pilote ou des objets d'attente du pilote Web entraînera respectivement un
NoSuchElement
ouTimeoutException
.J'ai fourni à l'équipe de chromedriver un journal de pilote Chrome détaillé et ils y travaillent.
MISE À JOUR : à partir du numéro 3223 de chromedriver
Fondamentalement, ce bogue a été introduit dans la v.77. Beaucoup d'entre nous viennent de remarquer ce problème car nous sommes passés de la v.76 à la .v78. Le mot est qu'ils visent un correctif pour .v80 (pas v. 79). Pour contourner ce problème, j'utilise
Thread.sleep
entre le moment où je passe à l'iframe et le moment où je tente de localiser le composant. Cette solution de contournement fonctionne bien. En fait, vous pouvez le vérifier par vous-même en exécutant simplement votre application en mode DEBUG. Lorsque vous suspendez l'exécution (en utilisant un point d'arrêt), vous remarquerez que votre code d'origine (sans sommeil) fonctionne correctement.la source
Par exemple: vous pouvez essayer d'utiliser ces mots clés !.
la source
Cela s'est avéré être un problème avec Google Chrome, pas avec chromedriver: https://bugs.chromium.org/p/chromedriver/issues/detail?id=3211
la source
J'ai eu le même problème.
Après la mise à jour automatique de Chrome avec la version 78.0, mes scripts de test automatisés échouaient. J'ai donc mis à jour chromedriver vers la version 78, mais le pilote n'a toujours pas pu trouver d'élément Web. Après cela, j'ai essayé avec plusieurs versions de chromedriver et enfin mon problème est résolu avec la version 2.44 de chromedriver .
Cette version peut être trouvée à https://chromedriver.storage.googleapis.com/index.html?path=2.44/
la source
Vous pouvez gérer les packages Nuget , supprimer le lecteur Chrome et rechercher Chrome, télécharger la nouvelle version selenium.web.driver.ChromeDriver >> pour jsaKamoto
vous y trouverez la version chromée 78.
la source