невідома помилка: у виклику функції виклику відсутнє значення для значення Selenium Send Keys навіть після оновлення хромодрука


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)

Я оновив драйвер хрому до 2,36, але все одно шукаю код 2,33?

Будь-яка ідея?


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

Відповіді:


115

Я отримав таку ж помилку, завантажте останню версію ChromeDriver та / або оновіть хромовану версію браузера, і вона буде працювати нормально :)

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


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

2
Я завантажив найновіший Chromeedriver 2.36, і він досі не працює з Chrome версією 65.0.3325.146 (Офіційна збірка) (64-розрядна) Принаймні на Mac OS :(
neliCZka

2
О, вибачте, я фактично неправильно налаштував свій шлях, і після того, як я пов’язав його з новим хромодруком, мій сценарій фактично працює зараз. Я, до речі, використовую машину Windows.
Cliff Chew

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 хром V65 , який допоможе списку змін мені вирішити цю проблему.

Рішення:

  • Оновіть Google Chrome до останньої стабільної версії (в моєму випадку це v65 9 / березня 2018 року)
  • Завантажте та налаштуйте найновіший Chromeedriver (v2.36). Для налаштування хромедрівера (в Ubuntu) виконайте наступні кроки ...

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

експортувати PATH = $ PATH: / usr / local / bin

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

хромедрівер --версія

він би показав версію хромодрука, яку ви тільки що встановили.

Примітка: Якщо Chromeedriver вже встановлений і налаштований, просто замініть існуючий файл драйвера, і якщо ви не знаєте, де вже збережені бінарні файли Chromedriver, спробуйте знайти файл за допомогою наступної команди

 sudo find -H / -type f -iname chromedriver

13

Це через оновлення хромованої версії браузера з 64.xx на 65.xx

Тепер у вас є два варіанти для успішного запуску тестів.

  1. Поновіть свій браузер Chrome до попередньої версії та за допомогою старого хромодрука, який у вас є.

  2. Оновіть свою версію Chromedriver до 2,36 за допомогою оновленого браузера Chrome.

    завітайте на сторінку https://chromedriver.storage.googleapis.com/index.html?path=2.36 та завантажте новий Chromeedriver.

Варіант 2 кращий.


Я перебуваю в наступному середовищі: Ubuntu 16.04, GoogleChrome 65.0.3325.146, ChromeDriver 2.36.540471. І я все одно отримую точну помилку вище. Що мені потрібно змінити? Помилка, однак говорить, що я використовую Chromeedriver версії 2.33.506092 ...
Armin

Вам потрібно згадати точний шлях останнього хромодрука, який ви оновили не старий. або Замініть старий хромовідвід на новий. Просто перевірте це.
Діпак N

Якщо хтось зіткнеться з цією помилкою у Visual studio, цю помилку вирішить оновлення пакета Nuget до хромованого веб-драйвера до 2,37 (на момент написання).
Гунаратінам

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 (Див. Belwo) ...

    System.setProperty ("webdriver.chrome.driver", "src / test / ресурси / драйвери / chromedriver.exe");

Використовуйте підхід нижче:

WebDriverManager.chromedriver (). Setup ();
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
Bourne

Так, і тепер найновіший - ChromeDriver 2.38 - Chromeedriver.chromium.org/downloads
Sharma

10

Потрібно оновити Chromeedriver: У консолі запустіть: 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

Ваша основна проблема - сумісність версій між бінарними файлами, якими ви користуєтесь:

  • Ви використовуєте хромедрівер = 2,33
  • Примітки до випуску Chromeedriver = 2.33 чітко зазначає наступне:

Підтримує Chrome v60-62

  • Ви використовуєте хром = 65,0
  • Примітки до випуску ChromeDriver v2.37 чітко згадує таке:

Підтримує Chrome v64-66

  • Версія вашого клієнта Selenium нам невідома.

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

Рішення

  • Оновіть селен до поточних рівнів Версія 3.11.0 .
  • Оновіть ChromeDriver до ChromeDriver v2.37 рівня .
  • Тримайте версію Chrome між рівнями Chrome v64.x-66.x . ( відповідно до приміток до випуску ChromeDriver v2.37 )
  • Очистіть свій Workspace Project через IDE і Rebuild ваш проект тільки з необхідними залежностями.
  • Використовуйте інструмент CCleaner , щоб стерти всі завдання ОС до і після виконання Вашого тестового набору .
  • Якщо ваша базова версія веб-браузера / веб-клієнта занадто стара, видаліть її через 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

Цей набір команд видалить поточний хромодрівер, перевірить оновлення та встановить останнє знайдене (наприклад, 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

У моєму випадку команда, на яку я вказує селен, на певний файл з хромедрівером. Для того, щоб змусити Selenium використовувати оновлений хромедрівер, я спершу встановив його з 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

У мене встановлений коштовний камінь-помічник Chromeedriver, але він зберігається і вимагає префікса "bundle exec" або оболонка не може знайти команду.

Сказане вирішило мою проблему.


0

Як згадували інші, останній хромовідвід зробив для мене трюк. У випадку, якщо ви завантажили драйвер вручну і хочете сказати appium використовувати новий Chromeedriver, ви можете зробити це за допомогою цієї команди:

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


0

Я запускаю Protractor (webdriver-менеджер) з 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

Я не знаю, чи продовжуєте це робити, але я отримував подібну помилку. У мене в PATH була остання версія Chromeedriver, і Google Chrome було оновлено. Я запускаю Python 3.6 на Windows 10 x64 біт. Що я намагався вибрати значення зі спадного меню на веб-сторінці. Дивна річ була в тому, що вона правильно вибере спадне значення, і сторінка буде оновлюватися чудово, але я все одно отримаю тую дурну помилку, і мій сценарій застигне. Тож я просто зробив для цього оброблювач помилок винятків, тому що, як я вже сказав, він вибрав значення, що випадає, правильно, тому я просто хотів обійти це німе повідомлення про помилку:

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

сподіваємось, хтось вважає це корисним.


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.