errore sconosciuto: "valore" mancante al risultato della funzione di chiamata per Selenium Send Keys anche dopo l'aggiornamento di chromedriver


110

Ricevo l'errore seguente durante l'invio delle chiavi.

Messaggio di risultato:

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)

Ho aggiornato il driver Chrome a 2.36 ma il mio codice cerca ancora 2.33?

Qualche idea ?


Lo stesso problema qui da ieri. Nel mio caso, penso che il problema sia una combinazione di chrome v65 senza testa + driver selenio v2.34 (il log delle modifiche dice che è compatibile con chrome v61-63)
Jorge Arévalo

Risposte:


115

Ho ricevuto lo stesso errore, scarica l'ultima versione di ChromeDriver e / o aggiorna la versione del browser Chrome e funzionerà bene :)

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


1
L'ho scaricato e indicato come Nuget e rimosso tutti i riferimenti a 2.33 ma si collega ancora al vecchio 2.33?
Zaki Ahmed

2
Ho scaricato il nuovissimo Chromedriver 2.36 e ancora non funziona con Chrome Versione 65.0.3325.146 (versione ufficiale) (64 bit) Almeno su Mac OS :(
neliCZka

2
Oh, si scusa, in realtà ho configurato il mio percorso in modo errato e dopo averlo collegato al nuovo chromedriver, il mio script funziona davvero ora. A proposito, sto usando una macchina Windows.
Cliff Chew

6
Se stai usando github.com/flavorjones/chromedriver-helper gem, allora esegui in consolechromedriver-update 2.36
Bachet

4
Se usi Homebrew, puoi eseguirebrew upgrade chromedriver
Diego Carrion

23


Dopo aver aggiornato il browser Google Chrome alla versione 65.0.3325.146 (versione ufficiale) (64 bit) , ho riscontrato lo stesso errore anche durante l'invio di valori al campo di input, ecco il messaggio di errore ...

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

utilizzando Chromedriver 2.32 e Google Chrome 65.0

Mentre facevo alcune ricerche sullo stesso, ho trovato un recente commit sui registri delle modifiche di Google Chrome v65 che mi aiutano a risolvere il problema.

Soluzione:

  • Aggiorna Google Chrome all'ultima versione stabile (nel mio caso è v65 il 9 / mar / 2018)
  • Scarica e configura l'ultimo Chromedriver (v2.36). Per configurare Chromedriver (su Ubuntu) segui questi passaggi ...

    1. Estrai il file zip scaricato.
    2. Copia il file chromedriver estratto in / usr / local / bin o nella posizione in cui di solito memorizzi i binari eseguibili.
    3. Aggiungi lo stesso percorso (dove posizioni il file chromedriver) alla variabile d'ambiente PATH come

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

  1. Per testare l'installazione, riavvia il terminale e digita questo comando

chromeedriver: versione

mostrerebbe la versione di chromedriver che hai appena installato.

Nota: se il Chromedriver è già installato e configurato, basta sostituire il file del driver esistente e se non sai dove sono già archiviati i binari di Chromedriver, prova a trovare il file utilizzando il seguente comando

 sudo find -H / -type f -iname chromedriver

13

È a causa dell'aggiornamento della versione del browser Chrome da 64.xx a 65.xx

Ora hai 2 opzioni per eseguire correttamente i tuoi test.

  1. Esegui il downgrade del browser Chrome alla versione precedente e con il vecchio chrome driver che hai ora.

  2. Aggiorna il tuo Chromedriver alla versione 2.36 con il browser Chrome aggiornato.

    visita https://chromedriver.storage.googleapis.com/index.html?path=2.36 e scarica il nuovo chromedriver.

L'opzione 2 è migliore.


Sono nel seguente ambiente: Ubuntu 16.04, GoogleChrome 65.0.3325.146, ChromeDriver 2.36.540471. E ricevo ancora l'errore esatto sopra. Cosa devo cambiare? L'errore, tuttavia, dice che sto usando la versione Chromedriver 2.33.506092 ...
Armin

Devi menzionare il percorso esatto dell'ultimo Chromedriver che hai aggiornato, non uno vecchio. oppure Sostituisci il vecchio chrome driver con uno nuovo. Basta controllare.
Deepak N

Se qualcuno riscontra questo errore in Visual Studio, l'aggiornamento al pacchetto Nuget del driver web chrome a 2.37 (al momento della scrittura) risolverà questo errore.
Gunarathinam

12

Sostituisci il tuo ChromeDriver.exe con l'ultima versione .. Lo stesso può essere scaricato facilmente da Google.

Inoltre è meglio farlo automaticamente utilizzando webDriver manager come spiegato di seguito - 1. Aggiungi la dipendenza Mvn al tuo progetto POM:

<dependency>
    <groupId>io.github.bonigarcia</groupId>
    <artifactId>webdrivermanager</artifactId>
    <version>${webdrivermanager.version}</version>
    <scope>test</scope>
</dependency>
  1. Ora nella classe di istanziazione del browser invece di utilizzare il modo tradizionale per creare il driver, ad esempio utilizzando System.setProperty (Vedi belwo) ...

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

Usa l'approccio seguente:

WebDriverManager.chromedriver () setup ().;
webDriver = nuovo ChromeDriver (chromeOptions);

E questo è tutto, hai finito!

Usa i link sottostanti come riferimento: Cos'è Browser Binary Manager come usarlo per Selenium

o chkout progetto git per lo stesso https://github.com/bonigarcia/webdrivermanager#webdrivermanager-as-java-dependency


3
Questo ha funzionato per me: i download per 2.37 possono essere trovati qui: chromedriver.storage.googleapis.com/index.html?path=2.37
Reily Bourne

Sì, e ora l'ultimo è: ChromeDriver 2.38 - chromedriver.chromium.org/downloads
Satyendra Sharma

10

È necessario aggiornare chromedriver: nella console, esegui: chromedriver-update 2.36


9

L'errore dice tutto:

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

L'errore si lamenta chiaramente di InvalidOperationException

Il tuo problema principale è la compatibilità della versione tra i binari che stai utilizzando come segue:

Supporta Chrome v60-62

Supporta Chrome v64-66

  • La tua versione del client Selenium ci è sconosciuta.

Quindi c'è una chiara discrepanza tra la versione ChromeDriver ( v2.33 ) e la versione del browser Chrome ( v65.0 )

Soluzione

  • Aggiorna il selenio ai livelli attuali Versione 3.11.0 .
  • Aggiorna ChromeDriver al livello ChromeDriver v2.37 .
  • Mantenere Chrome versione tra Chrome v64.x-66.x livelli. ( come da note di rilascio di ChromeDriver v2.37 )
  • Pulisci l' area di lavoro del progetto tramite l' IDE e ricostruisci tuo progetto solo con le dipendenze richieste.
  • Usa lo strumento CCleaner per cancellare tutte le faccende del sistema operativo prima e dopo l'esecuzione della tua suite di test .
  • Se la versione di base del browser Web / client Web è troppo vecchia, disinstallarla tramite Revo Uninstaller e installare una versione GA recente e rilasciata del browser Web / client Web .
  • Esegui il tuo @Test.

5

Se sei su Mac:

brew upgrade selenium-server-standalone
brew upgrade chromedriver

se i due precedenti non sono installati:

brew install selenium-server-standalone
brew install chromedriver

3

Utilizzo Goniometro e ho riscontrato lo stesso problema.

La soluzione nel mio caso era piuttosto semplice.

$ npm update protractor -g

$ webdriver-manager update


Se stai usando un gulp-protractorplugin, assicurati di aggiornarlo anche tu.
Ilya Vinogradov

2

Se sei sull'ultimo Google Chrome stabile (es. 67) ti consiglio di:

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

Questo insieme di comandi disinstallerà il tuo attuale chromedriver, verificherà la presenza di aggiornamenti e installerà l'ultimo trovato (es. 2.40).


Sono contento che abbia aiutato!
S. Esteves

1
Use xpaths instead of class names to locate elements

Dopo aver aggiornato Chrome e i suoi driver non mi ha aiutato affatto !! Non so quanto abbia senso ma ha funzionato per me quando ho sostituito il nome della classe con xpath. Questo è xpath, ho usato per automatizzare l'invio di messaggi whatsapp utilizzando python.

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

in precedenza stavo usando

driver.find_element_by_class_name('Some class Name Here')

0

Nel mio caso, il team che sto utilizzando punta selenio su uno specifico file chromedriver che avevamo. Per fare in modo che Selenium utilizzi il chromeedriver aggiornato, l'ho prima installato con brew e quindi creato un collegamento simbolico per indicare dove Selenium lo cerca:

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

0

Nella possibilità che questo potesse essere utile a qualcuno avevo bisogno di un passaggio aggiuntivo:

Sono su MacOS X. L'ho fatto

brew upgrade chromedriver
bundle exec chromedriver-upgrade

Ho installato la gem chromedriver-helper, ma è nascosta e richiede il prefisso "bundle exec" o la shell non riesce a trovare il comando.

Quanto sopra ha risolto il mio problema.


0

Come accennato da altri, l'ultimo chromedriver ha fatto il trucco per me. Nel caso in cui hai scaricato il driver manualmente e vuoi dire ad appium di usare il nuovo chromeedriver, puoi farlo con questo comando:

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


0

Utilizzo Goniometro (webdriver-manager) con Selenium in ambiente Windows e ho dovuto fare quanto segue:

  1. webdriver-manager update --versions.chrome="2.36" (Questo ha scaricato il nuovo Chromedriver nel percorso giusto ma non lo ha abilitato nel goniometro.)
  2. Modifica %userprofile%\AppData\Roaming\npm\node_modules\protractor\config.jsone cambiato il chromedrivervalore da 2.32a2.36 .
  3. Elimina il mio vecchio chromedriver_2.32.exeda %userprofile%\AppData\Roaming\npm\node_modules\protractor\seleniumper buona misura (non sono sicuro se fosse necessario).

O:

Quando è diventato necessario un altro aggiornamento di Chromedriver, non ero più in grado di aggiornare in questo modo. Un'impostazione di configurazione prevedeva ancora il vecchio percorso e nome file e non sono riuscito a capire dove modificare tale impostazione. Quindi ho rinominato l'ultimo chromedriver in "chromedriver.exe" e l'ho bloccato in C: \ Windows \ system32 (a cui fa sempre riferimento PATH). Grezzo, ma efficace.



0

Non so se stai ancora lavorando, ma ho ricevuto un errore simile. Avevo l'ultima versione di chromedriver nel mio PERCORSO e Google Chrome è stato aggiornato. Eseguo Python 3.6 su Windows 10 x64 bit. Quello che stavo ottenendo cercando di selezionare un valore da un menu a discesa su una pagina web. La cosa strana era che avrebbe selezionato correttamente il valore del menu a discesa e la pagina sarebbe stata aggiornata correttamente, ma avrei comunque ricevuto quello stupido errore e il mio script si sarebbe bloccato. Quindi ho appena creato un gestore di errori di eccezione per questo, perché come ho detto ha selezionato correttamente il valore a discesa, quindi volevo solo bypassare quel messaggio di errore stupido:

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

si spera che qualcuno lo trovi utile.


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.