Unbekannter Fehler: Ergebnis der Aufruffunktion fehlt 'Wert' für Selenium Send Keys, auch nach dem Upgrade des Chromedrivers

110

Beim Senden der Schlüssel wird die folgende Fehlermeldung angezeigt.

Ergebnismeldung:

System.InvalidOperationException : unknown error: call function result missing 'value'
  (Session info: chrome=65.0.3325.146)
  (Driver info: chromedriver=2.33.506120 (e3e53437346286c0bc2d2dc9aa4915ba81d9023f),platform=Windows NT 10.0.14393 x86_64)

Ich habe den Chrome-Treiber auf 2.36 aktualisiert, aber meine Codesuche nach 2.33?

Irgendeine Idee ?

Zaki Ahmed
quelle
Gleiches Problem hier seit gestern. In meinem Fall denke ich, dass das Problem eine Kombination aus kopflosem Chrom v65 + Selentreiber v2.34 ist (Changelog sagt, dass es mit Chrom v61-63 kompatibel ist)
Jorge Arévalo

Antworten:

115

Ich habe den gleichen Fehler erhalten, bitte laden Sie die letzte ChromeDriver-Version herunter und / oder aktualisieren Sie die Chrome-Browser-Version, und es wird gut funktionieren :)

https://chromedriver.storage.googleapis.com/index.html?path=2.36/

Codierer
quelle
1
Ich habe es heruntergeladen und als Nuget bezeichnet und alle Verweise auf 2.33 entfernt, aber es verbindet sich immer noch mit dem alten 2.33?
Zaki Ahmed
2
Ich habe den neuesten chromedriver 2.36 heruntergeladen und es funktioniert immer noch nicht mit Chrome Version 65.0.3325.146 (Official Build) (64-Bit) Zumindest unter Mac OS :(
neliCZka
2
Oh, entschuldige, ich habe meinen Pfad tatsächlich falsch konfiguriert und nachdem ich ihn mit dem neuen Chromedriver verknüpft habe, funktioniert mein Skript jetzt tatsächlich. Ich benutze übrigens eine Windows-Maschine.
Cliff Chew
6
Wenn Sie github.com/flavorjones/chromedriver-helper gem verwenden, dann laufen Sie in der Konsolechromedriver-update 2.36
Bachet
4
Wenn Sie Homebrew verwenden, können Siebrew upgrade chromedriver
Diego Carrion
23


Nach dem Aktualisieren des Google Chrome-Browsers auf Version 65.0.3325.146 (Official Build) (64-Bit) tritt beim Senden von Werten an das Eingabefeld derselbe Fehler auf. Hier ist die Fehlermeldung ...

selenium.common.exceptions.WebDriverException: Message: unknown error: call function result missing 'value'

mit Chromedriver 2.32 und Google Chrome 65.0

Als ich einige Nachforschungen anstellte , fand ich kürzlich ein Commit für Google Chrome V65-Änderungsprotokolle, das mir bei der Behebung des Problems hilft.

Lösung:

  • Aktualisieren Sie Google Chrome auf die neueste stabile Version (in meinem Fall v65 am 9. März 2018).
  • Laden Sie den neuesten Chromedriver (v2.36) herunter und konfigurieren Sie ihn. Führen Sie die folgenden Schritte aus, um chromedriver (unter Ubuntu) zu konfigurieren ...

    1. Extrahieren Sie die heruntergeladene Zip-Datei.
    2. Kopieren Sie die extrahierte Chromedriver-Datei nach / usr / local / bin oder an den Speicherort, an dem Sie normalerweise die ausführbaren Binärdateien speichern.
    3. Fügen Sie der Umgebungsvariablen PATH denselben Pfad hinzu (in dem Sie die Chromedriver-Datei ablegen) wie

export PATH = $ PATH: / usr / local / bin

  1. Starten Sie zum Testen der Installation das Terminal neu und geben Sie diesen Befehl ein

chromedriver --version

Es wird die Version von chromedriver angezeigt, die Sie gerade installiert haben.

Hinweis: Wenn der Chromedriver bereits installiert und konfiguriert ist, ersetzen Sie einfach die vorhandene Treiberdatei. Wenn Sie nicht wissen, wo die Chromedriver-Binärdateien bereits gespeichert sind, versuchen Sie, die Datei mit dem folgenden Befehl zu finden

 sudo find -H / -type f -iname chromedriver
AKay Nirala
quelle
13

Dies liegt an der Aktualisierung der Chrome-Browserversion von 64.xx auf 65.xx.

Jetzt haben Sie zwei Möglichkeiten, um Ihre Tests erfolgreich auszuführen.

  1. Downgraden Sie Ihren Chrome-Browser auf die vorherige Version und mit dem alten Chrome-Treiber, den Sie jetzt haben.

  2. Aktualisieren Sie Ihren Chromedriver mit dem aktualisierten Chrome-Browser auf die Version 2.36.

    Besuchen Sie https://chromedriver.storage.googleapis.com/index.html?path=2.36 und laden Sie den neuen Chromedriver herunter.

Option 2 ist besser.

Deepak N.
quelle
Ich bin in der folgenden Umgebung: Ubuntu 16.04, GoogleChrome 65.0.3325.146, ChromeDriver 2.36.540471. Und ich bekomme immer noch den genauen Fehler oben. Was muss ich ändern? Der Fehler besagt jedoch, dass ich chromedriver Version 2.33.506092 verwende ...
Armin
Sie müssen den genauen Pfad des neuesten Chromedriver angeben, den Sie aktualisiert haben, nicht einen alten. oder Ersetzen Sie den alten Chromtreiber durch einen neuen. Überprüfe es einfach.
Deepak N
Wenn jemand in Visual Studio auf diesen Fehler stößt, wird dieser Fehler durch ein Upgrade auf das Nuget-Paket des Chrome-Webtreibers auf 2.37 (zum Zeitpunkt des Schreibens) behoben.
Gunarathinam
12

Ersetzen Sie Ihre ChromeDriver.exe durch die neueste Version. Gleiches kann einfach von Google heruntergeladen werden.

Es ist auch besser, dies automatisch mithilfe des webDriver-Managers zu erledigen, wie unten erläutert. 1. Fügen Sie Ihrem Projekt-POM eine Mvn-Abhängigkeit hinzu:

<dependency>
    <groupId>io.github.bonigarcia</groupId>
    <artifactId>webdrivermanager</artifactId>
    <version>${webdrivermanager.version}</version>
    <scope>test</scope>
</dependency>
  1. Jetzt in Ihrer Browser-Instanziierungsklasse, anstatt den Treiber auf herkömmliche Weise zu erstellen, dh mithilfe von System.setProperty (siehe unten) ...

    System.setProperty ("webdriver.chrome.driver", "src / test / resources / drivers / chromedriver.exe");

Verwenden Sie den folgenden Ansatz:

WebDriverManager.chromedriver (). Setup ();
webDriver = neuer ChromeDriver (chromeOptions);

Und das ist alles, du bist fertig!

Verwenden Sie die folgenden Links als Referenz. Was ist Browser Binary Manager, wie wird es für Selen verwendet?

oder chkout git project for same- https://github.com/bonigarcia/webdrivermanager#webdrivermanager-as-java-dependency

Satyendra Sharma
quelle
3
Das hat bei mir funktioniert - die Downloads für 2.37 finden Sie hier: chromedriver.storage.googleapis.com/index.html?path=2.37
Reily Bourne
Ja und jetzt ist die neueste - ChromeDriver 2.38 - chromedriver.chromium.org/downloads
Satyendra Sharma
10

Chromedriver muss aktualisiert werden: Führen Sie in der Konsole Folgendes aus: chromedriver-update 2.36

Olga
quelle
9

Der Fehler sagt alles:

System.InvalidOperationException : unknown error: call function result missing 'value'
  (Session info: chrome=65.0.3325.146)
  (Driver info: chromedriver=2.33.506120

Der Fehler beschwert sich eindeutig über InvalidOperationException

Ihr Hauptproblem ist die Versionskompatibilität zwischen den von Ihnen verwendeten Binärdateien wie folgt:

Unterstützt Chrome v60-62

Unterstützt Chrome v64-66

  • Ihre Selenium Client- Version ist uns unbekannt.

Es besteht also ein deutliches Missverhältnis zwischen der ChromeDriver- Version ( v2.33 ) und der Chrome Browser- Version ( v65.0 ).

Lösung

  • Aktualisieren Sie Selenium auf die aktuelle Version 3.11.0 .
  • Upgrade - ChromeDriver auf ChromeDriver V2.37 Ebene.
  • Halten Sie die Chrome- Version zwischen den Stufen Chrome v64.x-66.x . ( gemäß den Versionshinweisen zu ChromeDriver v2.37 )
  • Bereinigen Sie Ihren Projektarbeitsbereich über Ihre IDE und erstellen Sie Ihr Projekt nur mit den erforderlichen Abhängigkeiten neu.
  • Verwenden Sie das CCleaner- Tool, um alle Aufgaben des Betriebssystems vor und nach der Ausführung Ihrer Testsuite zu löschen .
  • Wenn Ihre Basisversion des Webbrowsers / Webclients zu alt ist, deinstallieren Sie sie über Revo Uninstaller und installieren Sie eine aktuelle GA und eine veröffentlichte Version von Webbrowser / Webclient .
  • Führen Sie Ihre @Test.
DebanjanB
quelle
5

Wenn Sie auf einem Mac sind:

brew upgrade selenium-server-standalone
brew upgrade chromedriver

wenn die beiden oben genannten nicht installiert sind:

brew install selenium-server-standalone
brew install chromedriver
Sandeep Shabd
quelle
3

Ich verwende Protractor und bin auf dasselbe Problem gestoßen.

Die Lösung war in meinem Fall ziemlich einfach.

$ npm update protractor -g

$ webdriver-manager update

catch22
quelle
Wenn Sie das gulp-protractorPlugin verwenden, müssen Sie es ebenfalls aktualisieren.
Ilya Vinogradov
2

Wenn Sie sich auf dem neuesten stabilen Google Chrome befinden (z. B. 67), empfehle ich:

brew uninstall chromedriver
brew tap homebrew/cask
brew cask install chromedriver

Diese Befehle deinstallieren Ihren aktuellen Chromedriver, suchen nach Updates und installieren die zuletzt gefundenen (z. B. 2.40).

S. Esteves
quelle
Ich bin froh, dass es geholfen hat!
S. Esteves
1
Use xpaths instead of class names to locate elements

Nach dem Update von Chrome und seinen Treibern hat es mir überhaupt nicht geholfen !! Ich weiß nicht, wie viel es Sinn macht, aber es hat bei mir funktioniert, als ich den Klassennamen durch xpath ersetzt habe. Dies ist der xpath, mit dem ich das Senden von WhatsApp-Nachrichten mit Python automatisiert habe.

driver.find_element_by_xpath('//*[@id="main"]/footer/div[1]/div[2]/div')

vorher habe ich benutzt

driver.find_element_by_class_name('Some class Name Here')
Sei Champzz
quelle
0

In meinem Fall ist das Team, das ich auf Punkte Selen zu einer bestimmten Chromedriver-Datei habe, die wir hatten. Um Selenium dazu zu bringen, den aktualisierten Chromedriver zu verwenden, habe ich ihn zuerst mit Brew installiert und dann einen symbolischen Link erstellt, um zu zeigen, wo Selenium danach sucht:

brew install chromedriver
ln -s /usr/local/Cellar/chromedriver/2.36/bin/chromedriver /path/where/selenium/expects/chromedriver
Chris
quelle
0

Bei der Möglichkeit, dass dies für jemanden hilfreich sein könnte, brauchte ich einen zusätzlichen Schritt:

Ich bin auf MacOS X. Ich habe

brew upgrade chromedriver
bundle exec chromedriver-upgrade

Ich habe den chromedriver-helper gem installiert, aber er ist versteckt und erfordert das Präfix "bundle exec", oder die Shell kann den Befehl nicht finden.

Das obige hat mein Problem behoben.

gischer
quelle
0

Wie von anderen erwähnt, hat der neueste Chromedriver den Trick für mich getan. Wenn Sie den Treiber manuell heruntergeladen haben und Appium anweisen möchten, den neuen Chromedriver zu verwenden, können Sie dies mit dem folgenden Befehl tun:

appium --chromedriver-executable /path/to/driver/chromedriver ....

Mark Duivesteijn
quelle
0

Ich führe Protractor (Webdriver-Manager) mit Selenium in einer Windows-Umgebung aus und musste Folgendes tun:

  1. webdriver-manager update --versions.chrome="2.36" (Dadurch wurde der neue Chromedriver auf den richtigen Pfad heruntergeladen, aber im Winkelmesser nicht aktiviert.)
  2. Bearbeiten %userprofile%\AppData\Roaming\npm\node_modules\protractor\config.jsonund ändern Sie den chromedriverWert von 2.32bis 2.36.
  3. Löschen Sie mein altes chromedriver_2.32.exeaus %userprofile%\AppData\Roaming\npm\node_modules\protractor\seleniumfür ein gutes Maß (nicht sicher, ob das erforderlich war.)

Oder:

Als ein weiteres Chromedriver-Update benötigt wurde, konnte ich auf diese Weise nicht mehr aktualisieren. Eine Konfigurationseinstellung erwartete immer noch den alten Pfad und Dateinamen, und ich konnte nicht herausfinden, wo diese Einstellung geändert werden sollte. Also habe ich den neuesten chromedriver in "chromedriver.exe" umbenannt und in C: \ Windows \ system32 (auf das immer von PATH verwiesen wird) eingefügt. Roh, aber effektiv.

Jordan Rieger
quelle
0

Wenn Sie das gulp-protractorPlugin verwenden, müssen Sie es ebenfalls aktualisieren.

Ilya Vinogradov
quelle
0

Ich weiß nicht, ob Sie noch dabei sind, aber ich habe einen ähnlichen Fehler erhalten. Ich hatte die neueste Version von chromedriver in meinem PATH und Google Chrome wurde aktualisiert. Ich führe Python 3.6 unter Windows 10 x 64 Bit aus. Was ich versuchte, einen Wert aus einem Dropdown-Menü auf einer Webseite auszuwählen. Das Seltsame war, es würde den Dropdown-Wert korrekt auswählen und die Seite würde schön aktualisiert, aber ich würde diesen dummen Fehler trotzdem erhalten und mein Skript würde einfrieren. Also habe ich gerade einen Ausnahmefehler-Handler dafür erstellt, weil ich, wie gesagt, den Dropdown-Wert richtig ausgewählt habe, also wollte ich nur diese dumme Fehlermeldung umgehen:

# select by value
try:
    select.select_by_value('100')
except:
    pass

hoffentlich findet das jemand hilfreich.

Matt Wilson
quelle
0

Das Problem ist auf eine Nichtübereinstimmung in der Chrome-Treiber- und Chrome-Browser-Version zurückzuführen. Der folgende Link gibt die Versionen von chromedriver an, die die Version des Chrome-Browsers unterstützen.

http://chromedriver.chromium.org/downloads

Chetan G. Bendre
quelle