2
votes

Erreur de résultat du script de lancement du pilote Chrome sur les appels FindElement

Après la mise à jour hier vers la version 76.0.3809.87 du navigateur Chrome et la mise à jour de mes pilotes Chrome vers la version 76.0.3809.68, nous rencontrons d'étranges exceptions sur un ensemble de sites Web lors de l'utilisation de FindElements , FindElementByXPath et les méthodes FindElement . Ce problème ne se produisait pas avant la mise à jour. L'exception levée est:

erreur inconnue: le script renvoie un résultat inattendu.

Actuellement, mon projet automatise quelque part entre 500 et 600 sites Web, et nous ne rencontrons ce problème (jusqu'à présent) que sur 3 sites:

  • https://billing.clarksvillegw.com/iwr/user/login.seam
  • https://mwsonline.nashville.gov/iwr/user/login.seam
  • https://webconnect.greensboro-nc.gov/iwr/user/login.seam

Chacun de ces sites est construit par la même société, donc le code est comparable. Lors de l'utilisation de la méthode FindElementById , cette exception n'est pas levée. Le XPath que vous donnez à la méthode n'a pas non plus d'importance, l'exception est lancée à chaque fois. J'ai essayé de créer un nouveau projet avec une nouvelle installation de sélénium et les résultats sont les mêmes.

Je suis sûr que cela a quelque chose à voir avec la mise à jour du pilote Chrome et avec la mise en œuvre réelle de FindElements que j'ai recherché mais que je ne parviens pas à trouver. Je suppose qu'il utilise du javascript dans le backend qui ne joue pas bien avec le site Web.

Je n'ai pas essayé de reproduire ce problème avec un autre pilote. Compte tenu de certaines contraintes de notre projet, nous ne pouvons pas utiliser autre chose que le pilote Chrome pour le moment.

La recherche de ce problème ne donne aucun résultat, car il s'agit d'un nouveau problème. La recherche du message d'exception donne simplement des informations sur l'utilisation incorrecte de ExecuteScript , ce qui est (je suppose) sans rapport avec ma question.

Est-ce que quelqu'un sait ce qui en serait la cause sur le site Web? Ou s'il existe une solution de contournement connue? Je veux juste m'assurer que je ne fais rien de spécifique qui cause ce problème avant de soumettre un ticket d'aide pour ce problème.

try
{
    var driver = new ChromeDriver();
    driver.Navigate().GoToUrl("https://billing.clarksvillegw.com/iwr/user/login.seam");
    var success = driver.FindElementsById("login:usernamedec:username").Any();
    var failure = driver.FindElementsByXPath("//*[@id='login:usernamedec:username']").Any();
}
catch (Exception)
{
    throw;
}

Lorsque vous utilisez le code ci-dessus, succès est calculé correctement, mais lorsque vous essayez de calculer échec , le code lève l'exception.


0 commentaires

3 Réponses :


7
votes

J'ai exactement la même erreur après la mise à niveau du navigateur Chrome et de ChromeDriver vers 76.0.3809.87 sur notre serveur d'automatisation de test, exécutant Selenium-Webdriver et Appium sur ruby.

Ont réduit la cause du problème et ont fini par obtenir des erreurs renvoyées par cette méthode ci-dessous - lors de l'appel d'un objet de table avec une référence de ligne / colonne, c'est-à-dire.

`def row_items
    meth = strategy == :descendants ? :trs : :rows
    @row_items ||= element.send(meth).map do |obj|
      ::PageObject::Elements::TableRow.new(obj)
    end
 end`

Cheezy page-object

`execute_script("arguments[0].scrollIntoView({block: 'center'});", self.sales_table_element[ref][@ref_col])`

Solution de contournement: rétrogradez le pilote Chrome à 75.0.3770.140 résout le problème pour moi

C'est une solution provisoire à partir de maintenant. J'espère que ce problème sera bientôt définitivement résolu!

MISE À JOUR: La mise à niveau de ChromeDriver et du navigateur Chrome vers 77.0.3865.40 résout le problème. - Voir aussi, https://chromedriver.storage.googleapis.com/77.0. 3865.40 / notes.txt


3 commentaires

Merci pour cela, nous voyons également une erreur avec 76 et essayons également ceci: github. com / publiclab / plots2 / pull / 6094


En fait, je n'ai pas pu trouver de lien vers un fichier binaire pour Chrome 75, correspondant à cela. Savez-vous où nous pouvons en trouver un?


Salut jywarren, ma solution ci-dessus était de rétrograder uniquement ChromeDriver - à 75.0.3770.140. Le navigateur Chrome fonctionnait toujours sur 76.0.3809.87



-1
votes

L'utilisation de l'ancien chromedriver (75.0.3770.140) ne fonctionnait pas pour moi. Quelqu'un a encore une autre solution?


0 commentaires

1
votes

Ce problème est décrit ici et reproduit lorsque la page en cours de test, utilisez prototypejs v1.6.1

Bug correspondant ici (fermé maintenant) et devrait être publié dans les nouvelles versions de chromedrivers v76, v77 la semaine prochaine (après le 26 août 2019) Pour info: la version actuelle des chromedrivers est: 76.0.3809.68 et 77.0.3865.10

L'utilisation de la version précédente du pilote devrait fonctionner, avec chromedriver v75, vous ne devriez avoir des avertissements que "la version actuelle n'a pas été testée". Mais pour la v74, vous devrez lancer le pilote avec disable-build-check


1 commentaires

J'ai mis à niveau ChromeDriver vers 77.0.3865.40 et cela résout définitivement le problème - l'exécution de la version correspondante sur le navigateur Chrome. Voir ici - chromedriver.storage.googleapis.com/77.0.3865.40/notes.txt