nieznany błąd: wywołanie wyniku funkcji brakuje „wartości” dla Selenium Send Keys nawet po aktualizacji chromedriver

110

Otrzymuję poniższy błąd podczas wysyłania kluczy.

Wiadomość wynikowa:

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)

Zaktualizowałem sterownik Chrome do wersji 2.36, ale nadal wyszukuję kod na 2.33?

Dowolny pomysł ?

Zaki Ahmed
źródło
Ten sam problem od wczoraj. W moim przypadku problemem chyba jest połączenie bezgłowego chromu v65 + sterownik selenu v2.34 (dziennik zmian mówi, że jest kompatybilny z chromem v61-63)
Jorge Arévalo

Odpowiedzi:

115

Wystąpił ten sam błąd, proszę pobrać ostatnią wersję ChromeDriver i / lub zaktualizować wersję przeglądarki Chrome i będzie działać dobrze :)

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

Koder
źródło
1
Pobrałem go i określiłem jako Nuget i usunąłem wszystkie odniesienia do 2.33, ale nadal łączy się ze starym 2.33?
Zaki Ahmed
2
Pobrałem najnowszy chromedriver 2.36 i nadal nie działa z Chrome 65.0.3325.146 (oficjalna kompilacja) (64-bit) Przynajmniej na Mac OS :(
neliCZka
2
Och, przepraszam, tak naprawdę źle skonfigurowałem ścieżkę, a po połączeniu jej z nowym sterownikiem chromedriver mój skrypt faktycznie teraz działa. Nawiasem mówiąc, używam komputera z systemem Windows.
Cliff Chew
6
Jeśli używasz github.com/flavorjones/chromedriver-helper gem, uruchom w konsolichromedriver-update 2.36
Bachet
4
Jeśli używasz Homebrew, możesz wykonaćbrew upgrade chromedriver
Diego Carrion
23


Po zaktualizowaniu przeglądarki Google Chrome do wersji 65.0.3325.146 (oficjalna kompilacja) (64-bitowa) napotkałem również ten sam błąd podczas wysyłania wartości do pola wejściowego, oto komunikat o błędzie ...

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

używając Chromedriver 2.32 i Google Chrome 65.0

Gdy przeprowadziłem pewne badania na ten temat, znalazłem niedawne zatwierdzenie w dziennikach zmian Google Chrome v65, które pomagają mi rozwiązać problem.

Rozwiązanie:

  • Zaktualizuj Google Chrome do najnowszej stabilnej wersji (w moim przypadku jest to wersja 65 z 9 marca 2018 r.)
  • Pobierz i skonfiguruj najnowszą wersję chromedriver (v2.36). Aby skonfigurować chromedriver (na Ubuntu), wykonaj następujące kroki ...

    1. Rozpakuj pobrany plik zip.
    2. Skopiuj wyodrębniony plik chromedriver do / usr / local / bin lub do lokalizacji, w której zwykle przechowujesz wykonywalne pliki binarne.
    3. Dodaj tę samą ścieżkę (w której umieszczasz plik chromedriver) do zmiennej środowiskowej PATH co

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

  1. Aby przetestować instalację, uruchom ponownie terminal i wpisz to polecenie

chromedriver - wersja

pokaże wersję chromedrivera, którą właśnie zainstalowałeś.

Uwaga: jeśli chromedriver jest już zainstalowany i skonfigurowany, po prostu zastąp istniejący plik sterownika i jeśli nie wiesz, gdzie pliki binarne Chromedrivera są już zapisane, spróbuj znaleźć plik za pomocą następującego polecenia

 sudo find -H / -type f -iname chromedriver
AKay Nirala
źródło
13

Wynika to z aktualizacji wersji przeglądarki Chrome z 64.xx do 65.xx

Teraz masz dwie możliwości pomyślnego przeprowadzenia testów.

  1. Zmień swoją przeglądarkę Chrome na poprzednią wersję i stary sterownik chromedriver, który masz teraz.

  2. Zaktualizuj swojego Chromedrivera do wersji 2.36 za pomocą zaktualizowanej przeglądarki Chrome.

    Wejdź na https://chromedriver.storage.googleapis.com/index.html?path=2.36 i pobierz nowy chromedriver.

Opcja 2 jest lepsza.

Deepak N
źródło
Pracuję w środowisku: Ubuntu 16.04, GoogleChrome 65.0.3325.146, ChromeDriver 2.36.540471. I nadal otrzymuję dokładny błąd powyżej. Co muszę zmienić? Błąd mówi jednak, że używam chromedriver w wersji 2.33.506092 ...
Armin
Musisz podać dokładną ścieżkę najnowszego chromedrivera, który zaktualizowałeś, a nie starego. lub Wymień stary chromowany sterownik na nowy. Po prostu to sprawdź.
Deepak N
Jeśli ktoś napotka ten błąd w programie Visual Studio, uaktualnienie do pakietu Nuget sterownika sieciowego Chrome do wersji 2.37 (w momencie pisania) rozwiąże ten błąd.
Gunarathinam
12

Zastąp ChromeDriver.exe najnowszą wersją. To samo można łatwo pobrać z Google.

Lepiej też zrobić to automatycznie, używając menedżera webDriver, jak wyjaśniono poniżej - 1. Dodaj zależność Mvn do swojego projektu POM:

<dependency>
    <groupId>io.github.bonigarcia</groupId>
    <artifactId>webdrivermanager</artifactId>
    <version>${webdrivermanager.version}</version>
    <scope>test</scope>
</dependency>
  1. Teraz w klasie instancji przeglądarki zamiast w tradycyjny sposób tworzenia sterownika, np. Przy użyciu System.setProperty (patrz poniżej) ...

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

Użyj poniższego podejścia:

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

I to wszystko, gotowe!

Użyj poniższych linków w celach informacyjnych- Co to jest Menedżer binarny przeglądarki, jak go używać dla Selenium

lub projekt chkout git dla tego samego - https://github.com/bonigarcia/webdrivermanager#webdrivermanager-as-java-dependency

Satyendra Sharma
źródło
3
To zadziałało dla mnie - pliki do pobrania dla wersji 2.37 można znaleźć tutaj: chromedriver.storage.googleapis.com/index.html?path=2.37
Reily Bourne
Tak, a teraz najnowszy to - ChromeDriver 2.38 - chromedriver.chromium.org/downloads
Satyendra Sharma
10

Musisz zaktualizować chromedriver: W konsoli uruchom: chromedriver-update 2.36

Olga
źródło
9

Błąd mówi wszystko:

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

Błąd wyraźnie skarży się na InvalidOperationException

Twoim głównym problemem jest zgodność wersji między używanymi plikami binarnymi w następujący sposób:

Obsługuje Chrome v60-62

Obsługuje Chrome w wersji 64-66

  • Twoja wersja Selenium Client nie jest nam znana.

Więc istnieje wyraźna rozbieżność pomiędzy ChromeDriver wersji ( v2.33 ) oraz Chrome wersji ( v65.0 )

Rozwiązanie

  • Zaktualizuj Selenium do obecnych poziomów Wersja 3.11.0 .
  • Zaktualizuj ChromeDriver do poziomu ChromeDriver v2.37 .
  • Zachowaj wersję Chrome pomiędzy poziomami Chrome v64.x-66.x . ( zgodnie z informacjami o wersji ChromeDriver v2.37 )
  • Oczyść swój projektu Workspace za pośrednictwem IDE i Rebuild swój projekt z zaledwie wymaganych zależności.
  • Użyj narzędzia CCleaner , aby usunąć wszystkie obowiązki systemu operacyjnego przed i po wykonaniu pakietu testów .
  • Jeśli podstawowa wersja przeglądarki internetowej / klienta sieci Web jest zbyt stara, odinstaluj ją za pomocą Revo Uninstaller i zainstaluj najnowszą wersję GA i wydaną wersję przeglądarki internetowej / klienta sieci Web .
  • Wykonaj swoje @Test.
DebanjanB
źródło
5

Jeśli używasz komputera Mac:

brew upgrade selenium-server-standalone
brew upgrade chromedriver

jeśli powyższe dwa nie są zainstalowane:

brew install selenium-server-standalone
brew install chromedriver
Sandeep Shabd
źródło
3

Używam Protractora i napotkałem ten sam problem.

Rozwiązanie w moim przypadku było dość proste.

$ npm update protractor -g

$ webdriver-manager update

Złap 22
źródło
Jeśli używasz gulp-protractorwtyczki, pamiętaj, aby ją również zaktualizować.
Ilya Vinogradov
2

Jeśli korzystasz z najnowszej stabilnej przeglądarki Google Chrome (np. 67) polecam:

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

Ten zestaw poleceń odinstaluje twój obecny chromedriver, sprawdzi dostępność aktualizacji i zainstaluje najnowsze znalezione (np. 2.40).

S. Esteves
źródło
Cieszę się, że pomogło!
S. Esteves,
1
Use xpaths instead of class names to locate elements

Po aktualizacji Chrome i jego sterowników w ogóle mi to nie pomogło !! Nie wiem, na ile to ma sens, ale zadziałało, gdy zamieniłem nazwę klasy na xpath. To jest ścieżka xpath, której użyłem do automatyzacji wysyłania wiadomości WhatsApp przy użyciu Pythona.

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

poprzednio używałem

driver.find_element_by_class_name('Some class Name Here')
Bądź Champzzem
źródło
0

W moim przypadku zespół, który mam na liście, wskazuje selen do konkretnego pilnika chromedriver, który mieliśmy. Aby Selenium używał zaktualizowanego chromedrivera, najpierw zainstalowałem go z naparem, a następnie utworzyłem symboliczne łącze do punktu, w którym Selenium go szuka:

brew install chromedriver
ln -s /usr/local/Cellar/chromedriver/2.36/bin/chromedriver /path/where/selenium/expects/chromedriver
Chris
źródło
0

Na wypadek, gdyby to mogło być pomocne dla kogoś, potrzebowałem dodatkowego kroku:

Jestem na MacOS X. Tak

brew upgrade chromedriver
bundle exec chromedriver-upgrade

Mam zainstalowany gem chromedriver-helper, ale jest on ukryty i wymaga przedrostka „bundle exec” lub powłoka nie może znaleźć polecenia.

Powyższe rozwiązało mój problem.

gischer
źródło
0

Jak wspominali inni, najnowszy chromedriver załatwił sprawę za mnie. Jeśli pobrałeś sterownik ręcznie i chcesz powiedzieć appium, aby używał nowego chromedrivera, możesz to zrobić za pomocą tego polecenia:

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

Mark Duivesteijn
źródło
0

Używam Protractor (webdriver-manager) z Selenium w środowisku Windows i musiałem wykonać następujące czynności:

  1. webdriver-manager update --versions.chrome="2.36" (Spowoduje to pobranie nowego Chromedrivera na właściwą ścieżkę, ale nie włączyło go w kątomierzu).
  2. Edytuj %userprofile%\AppData\Roaming\npm\node_modules\protractor\config.jsoni zmień chromedriverwartość z 2.32na2.36 .
  3. Usuń moją starą wersję chromedriver_2.32.exez %userprofile%\AppData\Roaming\npm\node_modules\protractor\seleniumna miarę (nie jestem pewien, czy to było wymagane).

Lub:

Kiedy potrzebna była kolejna aktualizacja Chromedrivera, nie mogłem już aktualizować w ten sposób. Ustawienie konfiguracji nadal wymagało starej ścieżki i nazwy pliku i nie mogłem dowiedzieć się, gdzie zmienić to ustawienie. Dlatego właśnie zmieniłem nazwę najnowszego sterownika chromedriver na „chromedriver.exe” i umieściłem go w C: \ Windows \ system32 (do którego zawsze odwołuje się PATH). Surowy, ale skuteczny.

Jordan Rieger
źródło
0

Jeśli używasz gulp-protractorwtyczki, pamiętaj, aby ją również zaktualizować.

Ilya Vinogradov
źródło
0

Nie wiem, czy nadal to robisz, ale otrzymałem podobny błąd. Miałem najnowszą wersję chromedrivera w mojej PATH i Google Chrome został zaktualizowany. Uruchamiam Python 3.6 w systemie Windows 10 x64 bit. Co otrzymywałem, próbując wybrać wartość z menu rozwijanego na stronie internetowej. Dziwne było to, że poprawnie wybierałby rozwijaną wartość i strona byłaby ładnie aktualizowana, ale i tak otrzymywałbym ten głupi błąd i mój skrypt się zawiesił. Więc właśnie stworzyłem dla niego program obsługi błędów wyjątku, ponieważ tak jak powiedziałem, poprawnie wybrał wartość rozwijaną, więc chciałem tylko ominąć ten głupi komunikat o błędzie:

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

miejmy nadzieję, że ktoś uzna to za pomocne.

Matt Wilson
źródło