неизвестная ошибка: в результате функции вызова отсутствует значение для ключей отправки Selenium даже после обновления хромированной драйвера.


110

При отправке ключей я получаю указанную ниже ошибку.

Сообщение о результате:

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)

Я обновил драйвер Chrome до версии 2.36, но мой код по-прежнему ищет 2.33?

Любая идея ?


Та же проблема здесь со вчерашнего дня. В моем случае, я думаю, что проблема заключается в комбинации безголового хрома v65 + селенового драйвера v2.34 (журнал изменений говорит, что он совместим с хромом v61-63)
Хорхе Аревало

Ответы:


115

У меня такая же ошибка, пожалуйста, загрузите последнюю версию ChromeDriver и / или обновите версию браузера Chrome, и все будет нормально :)

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


1
Я загрузил его и назвал Nuget и удалил все ссылки на 2.33, но все же он подключается к старому 2.33?
Заки Ахмед

2
Я скачал новейший chromedriver 2.36 и до сих пор не работает с Chrome версии 65.0.3325.146 (Официальная сборка) (64-разрядная версия ) По крайней мере , на Mac OS :(
neliCZka

2
Ой, извиняюсь, я на самом деле неправильно настроил свой путь, и после того, как я связал его с новым хромированным драйвером, мой скрипт теперь действительно работает. Кстати, я использую Windows-машину.
Клифф Чу

6
Если вы используете github.com/flavorjones/chromedriver-helper gem, запустите в консолиchromedriver-update 2.36
Bachet

4
Если вы используете Homebrew, вы можете выполнитьbrew upgrade chromedriver
Diego Carrion

23


После обновления браузера Google Chrome до версии 65.0.3325.146 (официальная сборка) (64-разрядная версия) я также столкнулся с той же ошибкой при отправке значений в поле ввода, вот сообщение об ошибке ...

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

с использованием Chromedriver 2.32 и Google Chrome 65.0

По мере того, как я исследовал то же самое, я обнаружил недавнюю фиксацию в журналах изменений Google Chrome v65, которые помогают мне решить проблему.

Решение:

  • Обновите Google Chrome до последней стабильной версии (в моем случае это v65 от 9 марта 2018 г.)
  • Загрузите и настройте последнюю версию chromedriver (v2.36). Для настройки chromedriver (в Ubuntu) выполните следующие действия ...

    1. Распакуйте загруженный zip-файл.
    2. Скопируйте извлеченный файл chromedriver в / usr / local / bin или в место, где вы обычно храните исполняемые двоичные файлы.
    3. Добавьте тот же путь (куда вы помещаете файл chromedriver) в переменную окружения PATH как

экспорт PATH = $ PATH: / usr / local / bin

  1. Для тестирования установки перезапустите терминал и введите эту команду

chromedriver --version

он покажет версию chromedriver, которую вы только что установили.

Примечание. Если chromedriver уже установлен и настроен, просто замените существующий файл драйвера, и если вы не знаете, где уже сохранены двоичные файлы Chromedriver, попробуйте найти файл, используя следующую команду

 sudo find -H / -type f -iname chromedriver

13

Это из-за обновления версии браузера Chrome с 64.xx до 65.xx

Теперь у вас есть 2 варианта успешного выполнения тестов.

  1. Понизьте свой браузер Chrome до предыдущей версии и используйте старую версию Chrome, которая у вас есть сейчас.

  2. Обновите Chromedriver до версии 2.36 с помощью обновленного браузера Chrome.

    посетите https://chromedriver.storage.googleapis.com/index.html?path=2.36 и загрузите новый chromedriver.

Вариант 2 лучше.


Я нахожусь в следующей среде: Ubuntu 16.04, GoogleChrome 65.0.3325.146, ChromeDriver 2.36.540471. И я все еще получаю точную ошибку, указанную выше. Что мне нужно изменить? Ошибка, однако, говорит, что я использую версию 2.33.506092 chromedriver ...
Армин,

Вам необходимо указать точный путь к последней хромированной драйвере, которую вы обновили, а не к старой. или Замените старую хромированную отвертку на новую. Просто проверьте это.
Deepak N

Если кто-нибудь столкнется с этой ошибкой в ​​Visual Studio, обновите пакет Nuget для Chrome до версии 2.37 (на момент написания), чтобы решить эту ошибку.
Gunarathinam

12

Замените ChromeDriver.exe последней версией .. То же самое можно легко загрузить с Google.

Также лучше сделать это автоматически, используя диспетчер webDriver, как описано ниже - 1. Добавьте зависимость Mvn в POM вашего проекта:

<dependency>
    <groupId>io.github.bonigarcia</groupId>
    <artifactId>webdrivermanager</artifactId>
    <version>${webdrivermanager.version}</version>
    <scope>test</scope>
</dependency>
  1. Теперь в вашем классе экземпляра браузера вместо использования традиционного способа создания драйвера, то есть с помощью System.setProperty (см. Ниже) ...

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

Используйте нижеприведенный подход:

WebDriverManager.chromedriver (). Настройка ();
webDriver = новый ChromeDriver (chromeOptions);

И все, готово!

Используйте ссылки ниже для справки - Что такое диспетчер двоичных файлов браузера, как использовать его для Selenium

или проект chkout git для того же- https://github.com/bonigarcia/webdrivermanager#webdrivermanager-as-java-dependency


3
У меня это сработало - загрузки для 2.37 можно найти здесь: chromedriver.storage.googleapis.com/index.html?path=2.37
Рейли Борн

Да, и теперь последняя версия - ChromeDriver 2.38 - chromedriver.chromium.org/downloads
Sharma

10

Необходимо обновить chromedriver: в консоли запустите: chromedriver-update 2.36


9

Ошибка говорит сама за себя:

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

Ошибка явно жалуется на InvalidOperationException

Основная проблема заключается в совместимости версий между используемыми вами двоичными файлами:

Поддерживает Chrome v60-62

Поддерживает Chrome v64-66

  • Ваша версия Selenium Client нам неизвестна.

Таким образом , существует четкое несоответствие между ChromeDriver версии ( v2.33 ) и браузера Chrome версии ( v65.0 )

Решение

  • Обновите Selenium до текущих уровней Версия 3.11.0 .
  • Обновите ChromeDriver до уровня ChromeDriver v2.37 .
  • Держите версию Chrome между уровнями Chrome v64.x-66.x . ( согласно примечаниям к выпуску ChromeDriver v2.37 )
  • Очистите свой Workspace Project через IDE и Rebuild ваш проект только с необходимыми зависимостями.
  • Используйте инструмент CCleaner , чтобы избавиться от всей рутинной работы ОС до и после выполнения вашего Test Suite .
  • Если ваша базовая версия веб-браузера / веб-клиента слишком старая, удалите ее с помощью Revo Uninstaller и установите последнюю версию GA и выпущенную версию веб-браузера / веб-клиента .
  • Выполните свой @Test.

5

Если вы используете Mac:

brew upgrade selenium-server-standalone
brew upgrade chromedriver

если два указанных выше не установлены:

brew install selenium-server-standalone
brew install chromedriver

3

Я использую Protractor и столкнулся с той же проблемой.

Решение в моем случае было довольно простым.

$ npm update protractor -g

$ webdriver-manager update


Если вы используете gulp-protractorплагин, обязательно обновите его.
Илья Виноградов

2

Если вы используете последнюю стабильную версию Google Chrome (например, 67), я рекомендую:

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

Этот набор команд удалит ваш текущий chromedriver, проверит наличие обновлений и установит последнее найденное (например, 2.40).


Рад, что помог!
S. Esteves

1
Use xpaths instead of class names to locate elements

После обновления хрома и его драйверов он мне совсем не помог !! Не знаю, насколько это имеет смысл, но у меня это сработало, когда я заменил имя класса на xpath. Это xpath, который я использовал для автоматизации отправки сообщения WhatsApp с помощью Python.

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

ранее я использовал

driver.find_element_by_class_name('Some class Name Here')

0

В моем случае команда, на которой я работаю, указывает селен на конкретный файл chromedriver, который у нас был. Чтобы заставить Selenium использовать обновленный chromedriver, я сначала установил его с помощью brew, а затем создал символическую ссылку, указывающую, где Selenium ищет его:

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

0

Если это может быть полезно для кого-то, мне нужен дополнительный шаг:

Я использую MacOS X. Я сделал

brew upgrade chromedriver
bundle exec chromedriver-upgrade

У меня установлен гем chromedriver-helper, но он спрятан и требует префикса "bundle exec", иначе оболочка не может найти команду.

Вышесказанное устранило мою проблему.


0

Как уже упоминалось другими, последняя версия хромированной отвертки сделала свое дело. Если вы загрузили драйвер вручную и хотите сообщить appium, что нужно использовать новый хромированный драйвер, вы можете сделать это с помощью этой команды:

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


0

Я запускаю Protractor (webdriver-manager) с Selenium в среде Windows, и мне пришлось сделать следующее:

  1. webdriver-manager update --versions.chrome="2.36" (Это загрузило новый Chromedriver по правильному пути, но не включило его в транспортире.)
  2. Отредактируйте %userprofile%\AppData\Roaming\npm\node_modules\protractor\config.jsonи измените chromedriverзначение с 2.32на 2.36.
  3. Удалите мой старый chromedriver_2.32.exeиз %userprofile%\AppData\Roaming\npm\node_modules\protractor\seleniumна всякий случай (не уверен, что это было необходимо).

Или:

Когда возникла необходимость в другом обновлении Chromedriver, я больше не мог обновлять этот способ. Параметр конфигурации все еще ожидал старого пути и имени файла, и я не мог понять, где изменить этот параметр. Поэтому я просто переименовал последний хромированный драйвер в «chromedriver.exe» и вставил его в C: \ Windows \ system32 (на который всегда ссылается PATH). Грубый, но эффективный.



0

Я не знаю, продолжаете ли вы это делать, но я получал аналогичную ошибку. У меня была последняя версия chromedriver в моем PATH, и Google Chrome был обновлен. Я запускаю Python 3.6 на Windows 10 x64 bit. То, что я получал, пытаясь выбрать значение из раскрывающегося меню на веб-странице. Странно было то, что он правильно выбрал бы раскрывающееся значение, и страница была бы красиво обновлена, но я все равно получал эту глупую ошибку, и мой скрипт зависал. Поэтому я просто создал для него обработчик ошибок исключения, потому что, как я уже сказал, он правильно выбрал значение раскрывающегося списка, поэтому я просто хотел обойти это глупое сообщение об ошибке:

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

надеюсь, кто-то сочтет это полезным.


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.