python 2.7 - error desconocido: el resultado de la función de llamada falta ''valor'' para Selenium Send Keys incluso después de la actualización de chromedriver
selenium webdriver python (16)
Recibo el siguiente error al enviar claves.
Mensaje de resultado:
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)
¿He actualizado el controlador de Chrome a 2.36 pero aún así mi código busca 2.33?
Alguna idea ?
Como lo mencionaron otros, el último cromedriver hizo el truco por mí. En caso de que haya descargado el controlador manualmente y quiera decirle a Appium que use el nuevo controlador cromado, puede hacerlo con este comando:
appium --chromedriver-executable /path/to/driver/chromedriver ....
El error lo dice todo:
System.InvalidOperationException : unknown error: call function result missing ''value''
(Session info: chrome=65.0.3325.146)
(Driver info: chromedriver=2.33.506120
El error se queja claramente de InvalidOperationException
Su principal problema es la compatibilidad de versiones entre los archivos binarios que está utilizando de la siguiente manera:
- Estás utilizando chromedriver = 2,33
- Notas de la chromedriver=2.33 de chromedriver=2.33 menciona claramente lo siguiente:
Admite Chrome v60-62
- Estás usando Chrome = 65.0
- Las Notas de la versión de ChromeDriver v2.37 mencionan claramente lo siguiente:
Admite Chrome v64-66
- Su versión de Selenium Client es desconocida para nosotros.
Por lo tanto, existe una clara falta de coincidencia entre la versión de ChromeDriver ( v2.33 ) y la versión del navegador Chrome ( v65.0 )
Solución
- Actualice Selenium a los niveles actuales Versión 3.11.0 .
- Actualice ChromeDriver al nivel ChromeDriver v2.37 .
- Mantenga la versión de Chrome entre los niveles de Chrome v64.x-66.x . ( según las notas de la versión de ChromeDriver v2.37 )
- Limpie su espacio de trabajo del proyecto a través de su IDE y reconstruya su proyecto solo con las dependencias requeridas.
- Use la herramienta CCleaner para borrar todas las tareas del sistema operativo antes y después de la ejecución de su conjunto de pruebas .
- Si la versión básica de su navegador web / cliente web es demasiado antigua, desinstálela a través de Revo Uninstaller e instale una versión reciente de GA y lanzada del navegador web / cliente web .
-
Ejecute su
@Test
.
El problema se debe a la falta de coincidencia en la versión del navegador chromedriver y chrome. El siguiente enlace especifica las versiones de chromedriver que admiten la versión del navegador Chrome.
En caso de que esto pueda ser útil para alguien, necesitaba un paso adicional:
Estoy en MacOS X. Lo hice
brew upgrade chromedriver
bundle exec chromedriver-upgrade
Tengo instalada la gema chromedriver-helper, pero está oculta y requiere el prefijo "bundle exec" o el shell no puede encontrar el comando.
Lo anterior solucionó mi problema.
En mi caso, el equipo en el que estoy seleccionó puntos de selenio a un archivo de cromedriver específico que teníamos. Para que Selenium use el controlador cromado actualizado, primero lo instalé con brew y luego creé un enlace simbólico para señalar dónde lo busca Selenium:
brew install chromedriver
ln -s /usr/local/Cellar/chromedriver/2.36/bin/chromedriver /path/where/selenium/expects/chromedriver
Estoy ejecutando Protractor (webdriver-manager) con Selenium en un entorno Windows, y tuve que hacer lo siguiente:
-
webdriver-manager update --versions.chrome="2.36"
(Esto descargó el nuevo Chromedriver en la ruta correcta pero no lo habilitó en el transportador). -
Edite
%userprofile%/AppData/Roaming/npm/node_modules/protractor/config.json
y cambió el valor dechromedriver
de2.32
a2.36
. -
Elimine mi viejo
chromedriver_2.32.exe
de%userprofile%/AppData/Roaming/npm/node_modules/protractor/selenium
por si acaso (no estoy seguro de si eso era necesario).
O:
Cuando se necesitó otra actualización de Chromedriver, ya no pude actualizar de esta manera. Una configuración todavía esperaba la ruta y el nombre de archivo antiguos, y no pude averiguar dónde cambiar esa configuración. Así que simplemente cambié el nombre del último chromedriver a "chromedriver.exe" y lo pegué en C: / Windows / system32 (que siempre hace referencia PATH). Crudo, pero efectivo.
Estoy ejecutando Protractor y he encontrado el mismo problema.
La solución en mi caso fue bastante simple.
$ npm update protractor -g
$ webdriver-manager update
Necesita actualizar chromedriver: en la consola, ejecute:
chromedriver-update 2.36
No sé si todavía estás en esto, pero recibí un error similar. Tenía la última versión de chromedriver en mi RUTA y Google Chrome se actualizó. Ejecuto Python 3.6 en Windows 10 x64 bit. Lo que estaba tratando de seleccionar un valor de un menú desplegable en una página web. Lo extraño fue que seleccionaría el valor desplegable correctamente y la página se actualizaría muy bien, pero de todos modos recibiría ese estúpido error y mi script se congelaría. Así que acabo de hacer un controlador de error de excepción, porque, como dije, seleccionó el valor desplegable correctamente, así que solo quería omitir ese mensaje de error tonto:
# select by value
try:
select.select_by_value(''100'')
except:
pass
Espero que alguien encuentre esto útil.
Recibí el mismo error, descarga la última versión de ChromeDriver y / o actualiza la versión del navegador Chrome y funcionará bien :)
https://chromedriver.storage.googleapis.com/index.html?path=2.36/
Reemplace su ChromeDriver.exe con la última versión. Lo mismo se puede descargar de Google fácilmente.
Además, para hacerlo automáticamente, puede usar el administrador de controlador web como se explica en el siguiente enlace: ¿Qué es el Administrador binario del navegador? ¿Cómo usarlo para Selenium?
o consulte el proyecto git para same- https://github.com/bonigarcia/webdrivermanager#webdrivermanager-as-java-dependency
Se debe a la actualización de la versión del navegador Chrome de 64.xx a 65.xx
Ahora tiene 2 opciones para ejecutar sus pruebas con éxito.
-
Cambia tu navegador Chrome a la versión anterior y con el viejo controlador de cromo que tienes ahora.
-
Actualice su Chromedriver a la versión 2.36 con el navegador Chrome actualizado.
visite https://chromedriver.storage.googleapis.com/index.html?path=2.36 y descargue el nuevo chromedriver.
La opción 2 es mejor.
Si está utilizando el complemento
gulp-protractor
, asegúrese de actualizarlo también.
Si estás en Mac:
brew upgrade selenium-server-standalone
brew upgrade chromedriver
si los dos anteriores no están instalados:
brew install selenium-server-standalone
brew install chromedriver
Si tiene la última versión estable de Google Chrome (por ejemplo, 67), le recomiendo:
brew uninstall chromedriver
brew tap homebrew/cask
brew cask install chromedriver
Este conjunto de comandos desinstalará su controlador cromado actual, buscará actualizaciones e instalará la última versión encontrada (por ejemplo, 2.40).
Después de actualizar el navegador Google Chrome a la
versión 65.0.3325.146 (versión oficial) (64 bits)
, también me encuentro con el mismo error al enviar valores al campo de entrada, aquí está el mensaje de error ...
selenium.common.exceptions.WebDriverException: Message: unknown error: call function result missing ''value''
usando Chromedriver 2.32 y Google Chrome 65.0
Mientras investigaba sobre el mismo, encontré una commit reciente en los registros de cambios de Google Chrome v65 que me ayudan a resolver el problema.
Solución:
- Actualice Google Chrome a la última versión estable (en mi caso es v65 el 9 / mar / 2018)
-
Descargue y configure el último chromedriver (v2.36). Para configurar chromedriver (en Ubuntu) siga estos pasos ...
- Extraiga el archivo zip descargado.
- Copie el archivo extraído de chromedriver en / usr / local / bin o en la ubicación donde generalmente almacena los archivos binarios ejecutables.
- Agregue la misma ruta (donde coloca el archivo chromedriver) a la variable de entorno PATH como
RUTA de exportación = $ RUTA: / usr / local / bin
- Para probar la instalación, reinicie el terminal y escriba este comando
chromedriver --version
mostraría la versión de chromedriver que acaba de instalar.
Nota: Si el chromedriver ya está instalado y configurado, simplemente reemplace el archivo del controlador existente y, si no sabe dónde están almacenados los archivos binarios de Chromedriver, intente encontrar el archivo con el siguiente comando
sudo find -H / -type f -iname chromedriver