kesalahan yang tidak diketahui: fungsi panggilan mengakibatkan kehilangan 'nilai' untuk Tombol Kirim Selenium bahkan setelah peningkatan chromedriver

110

Saya mendapatkan kesalahan di bawah ini saat mengirim kunci.

Pesan Hasil:

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)

Saya telah memperbarui driver chrome ke 2.36 tetapi masih mencari kode untuk 2.33?

Ada ide ?

Zaki Ahmed
sumber
Masalah yang sama di sini sejak kemarin. Dalam kasus saya, menurut saya masalahnya adalah kombinasi headless chrome v65 + selenium driver v2.34 (changelog mengatakan itu kompatibel dengan chrome v61-63)
Jorge Arévalo

Jawaban:

115

Saya mendapatkan kesalahan yang sama, silakan unduh versi ChromeDriver terakhir dan / atau perbarui versi browser chrome dan itu akan berfungsi dengan baik :)

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

Pembuat kode
sumber
1
Saya telah mengunduhnya dan merujuk sebagai Nuget dan menghapus semua referensi ke 2.33 tetapi masih terhubung ke yang lama 2.33?
Zaki Ahmed
2
Saya mengunduh chromedriver 2.36 terbaru dan masih tidak berfungsi dengan Chrome Versi 65.0.3325.146 (Build Resmi) (64-bit) Setidaknya di Mac OS :(
neliCZka
2
Oh, maaf, sebenarnya saya salah mengonfigurasi jalur, dan setelah saya menautkannya ke chromedriver baru, skrip saya benar-benar berfungsi sekarang. Saya menggunakan mesin windows.
Cliff Chew
6
Jika Anda menggunakan github.com/flavorjones/chromedriver-helper gem, kemudian jalankan di konsolchromedriver-update 2.36
Bachet
4
Jika Anda menggunakan Homebrew, Anda dapat mengeksekusibrew upgrade chromedriver
Diego Carrion
23


Setelah memperbarui browser Google Chrome ke Versi 65.0.3325.146 (Build Resmi) (64-bit) , saya juga mengalami kesalahan yang sama saat mengirim nilai ke bidang input, berikut pesan kesalahannya ...

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

menggunakan Chromedriver 2.32 dan Google Chrome 65.0

Ketika saya melakukan penelitian tentang hal yang sama, saya menemukan komit baru-baru ini di Google chrome v65 changelogs yang membantu saya menyelesaikan masalah.

Larutan:

  • Perbarui Google Chrome ke versi stabil terbaru (dalam kasus saya ini v65 pada 9 / mar / 2018)
  • Unduh dan konfigurasikan chromedriver terbaru (v2.36). Untuk mengonfigurasi chromedriver (di Ubuntu), ikuti langkah-langkah ini ...

    1. Ekstrak file zip yang diunduh.
    2. Salin file chromedriver yang diekstrak ke / usr / local / bin atau ke lokasi tempat Anda biasanya menyimpan binari yang dapat dieksekusi.
    3. Tambahkan jalur yang sama (tempat Anda menempatkan file chromedriver) ke variabel lingkungan PATH sebagai

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

  1. Untuk menguji instalasi, restart terminal dan ketik perintah ini

chromedriver --version

itu akan menunjukkan versi chromedriver yang baru saja Anda instal.

Catatan: Jika chromedriver sudah terpasang dan dikonfigurasi maka cukup ganti file driver yang ada dan Jika Anda tidak tahu di mana binari Chromedriver sudah disimpan maka coba cari file menggunakan perintah berikut

 sudo find -H / -type f -iname chromedriver
AKay Nirala
sumber
13

Itu karena pembaruan versi browser chrome dari 64.xx menjadi 65.xx

Sekarang Anda memiliki 2 opsi untuk menjalankan pengujian Anda dengan sukses.

  1. Turunkan versi browser chrome Anda ke versi sebelumnya dan dengan chromedriver lama yang Anda miliki sekarang.

  2. Tingkatkan Chromedriver Anda ke versi 2.36 dengan browser Chrome yang diperbarui.

    kunjungi https://chromedriver.storage.googleapis.com/index.html?path=2.36 dan download chromedriver baru.

Opsi 2 lebih baik.

Deepak N
sumber
Saya berada di lingkungan berikut: Ubuntu 16.04, GoogleChrome 65.0.3325.146, ChromeDriver 2.36.540471. Dan saya masih mendapatkan kesalahan persis di atas. Apa yang perlu saya ubah? Kesalahannya, bagaimanapun mengatakan saya menggunakan chromedriver versi 2.33.506092 ...
Armin
Anda perlu menyebutkan jalur yang tepat dari chromedriver terbaru yang telah Anda perbarui, bukan yang lama. atau Ganti chromedriver lama dengan yang baru. Cek saja.
Deepak N
Jika ada yang mengalami kesalahan ini di Visual studio, tingkatkan ke paket Nuget driver web chrome ke 2.37 (pada saat penulisan) akan menyelesaikan kesalahan ini.
Gunarathinam
12

Ganti ChromeDriver.exe Anda dengan versi terbaru .. Hal yang sama dapat diunduh dari Google dengan mudah.

Juga lebih baik menyelesaikannya secara otomatis dengan menggunakan webDriver manager seperti yang dijelaskan di bawah ini - 1. Tambahkan dependensi Mvn ke POM proyek Anda:

<dependency>
    <groupId>io.github.bonigarcia</groupId>
    <artifactId>webdrivermanager</artifactId>
    <version>${webdrivermanager.version}</version>
    <scope>test</scope>
</dependency>
  1. Sekarang di kelas Instansiasi Browser Anda daripada menggunakan cara tradisional untuk membuat driver yaitu dengan menggunakan System.setProperty (Lihat belwo) ...

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

Gunakan pendekatan di bawah ini:

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

Dan itu saja, Anda sudah selesai!

Gunakan tautan di bawah ini untuk referensi Anda- Apa itu Browser Binary Manager bagaimana menggunakannya untuk Selenium

atau chkout git project untuk same- https://github.com/bonigarcia/webdrivermanager#webdrivermanager-as-java-dependency

Satyendra Sharma
sumber
3
Ini berhasil bagi saya - unduhan untuk 2,37 dapat ditemukan di sini: chromedriver.storage.googleapis.com/index.html?path=2.37
Reily Bourne
Ya dan sekarang yang terbaru adalah- ChromeDriver 2.38 - chromedriver.chromium.org/downloads
Satyendra Sharma
10

Perlu memperbarui chromedriver: Di konsol, jalankan: chromedriver-update 2.36

Olga
sumber
9

Kesalahan mengatakan itu semua:

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

Kesalahan tersebut jelas mengeluh tentang InvalidOperationException

Masalah utama Anda adalah kompatibilitas versi antara binari yang Anda gunakan sebagai berikut:

  • Anda menggunakan chromedriver = 2.33
  • Catatan Rilis chromedriver = 2.33 dengan jelas menyebutkan hal berikut:

Mendukung Chrome v60-62

  • Anda menggunakan chrome = 65.0
  • Catatan Rilis ChromeDriver v2.37 dengan jelas menyebutkan hal berikut:

Mendukung Chrome v64-66

  • Versi Klien Selenium Anda tidak kami kenal.

Jadi ada ketidakcocokan yang jelas antara ChromeDriver versi ( v2.33 ) dan Browser Chrome versi ( v65.0 )

Larutan

  • Tingkatkan Selenium ke level saat ini Versi 3.11.0 .
  • Tingkatkan ChromeDriver ke tingkat ChromeDriver v2.37 .
  • Pertahankan versi Chrome di antara level Chrome v64.x-66.x . ( sesuai catatan rilis ChromeDriver v2.37 )
  • Bersihkan Anda Proyek Workspace melalui Anda IDE dan Membangun kembali proyek Anda dengan dependensi yang diperlukan saja.
  • Gunakan alat CCleaner untuk menghapus semua tugas OS sebelum dan setelah menjalankan rangkaian pengujian Anda .
  • Jika versi Browser Web / Klien Web dasar Anda terlalu lama, hapus instalannya melalui Revo Uninstaller dan instal GA terbaru dan versi Browser Web / Klien Web yang dirilis .
  • Jalankan @Test.
DebanjanB
sumber
5

Jika Anda menggunakan Mac:

brew upgrade selenium-server-standalone
brew upgrade chromedriver

jika dua di atas tidak dipasang:

brew install selenium-server-standalone
brew install chromedriver
Sandeep Shabd
sumber
3

Saya menjalankan Protractor dan mengalami masalah yang sama.

Solusi dalam kasus saya cukup sederhana.

$ npm update protractor -g

$ webdriver-manager update

menangkap22
sumber
Jika Anda menggunakan gulp-protractorplugin, pastikan untuk memperbaruinya juga.
Ilya Vinogradov
2

Jika Anda menggunakan Google Chrome stabil terbaru (misalnya 67), saya sarankan untuk:

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

Serangkaian perintah ini akan menghapus penginstalan chromedriver Anda saat ini, memeriksa pembaruan, dan menginstal yang terbaru ditemukan (misalnya 2.40).

S. Esteves
sumber
Senang bisa membantu!
S. Esteves
1
Use xpaths instead of class names to locate elements

Setelah memperbarui chrome dan drivernya, itu tidak membantu saya sama sekali !! Saya tidak tahu seberapa masuk akal tetapi itu berhasil untuk saya ketika saya mengganti nama kelas dengan xpath. Ini adalah xpath, saya biasa mengotomatiskan pengiriman pesan whatsapp menggunakan python.

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

sebelumnya saya Menggunakan

driver.find_element_by_class_name('Some class Name Here')
Jadilah Champzz
sumber
0

Dalam kasus saya, tim saya mengarahkan selenium ke file chromedriver tertentu yang kami miliki. Untuk mendapatkan Selenium agar menggunakan chromedriver yang diperbarui, saya pertama kali menginstalnya dengan brew dan kemudian membuat tautan simbolis ke titik di mana Selenium mencarinya:

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

Jika ini mungkin bermanfaat bagi seseorang, saya memerlukan langkah tambahan:

Saya menggunakan MacOS X. Saya melakukannya

brew upgrade chromedriver
bundle exec chromedriver-upgrade

Saya telah menginstal permata chromedriver-helper, tetapi permata itu disimpan dan memerlukan awalan "bundle exec" atau shell tidak dapat menemukan perintahnya.

Di atas memperbaiki masalah saya.

gischer
sumber
0

Seperti yang disebutkan oleh orang lain, chromedriver terbaru melakukan trik untuk saya. Jika Anda mengunduh driver secara manual dan ingin memberi tahu appium untuk menggunakan chromedriver baru, Anda dapat melakukannya dengan perintah ini:

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

Mark Duivesteijn
sumber
0

Saya menjalankan Protractor (webdriver-manager) dengan Selenium di lingkungan Windows, dan saya harus melakukan hal berikut:

  1. webdriver-manager update --versions.chrome="2.36" (Ini mengunduh Chromedriver baru ke jalur yang benar tetapi tidak mengaktifkannya di busur derajat.)
  2. Edit %userprofile%\AppData\Roaming\npm\node_modules\protractor\config.jsondan ubah chromedrivernilainya dari 2.32menjadi 2.36.
  3. Hapus lama saya chromedriver_2.32.exedari %userprofile%\AppData\Roaming\npm\node_modules\protractor\seleniumuntuk mengukur baik (tidak yakin apakah itu diperlukan.)

Atau:

Saat pembaruan Chromedriver lagi diperlukan, saya tidak dapat lagi memperbarui dengan cara ini. Pengaturan konfigurasi masih mengharapkan jalur dan nama file lama, dan saya tidak tahu di mana harus mengubah pengaturan itu. Jadi saya hanya mengganti nama chromedriver terbaru menjadi "chromedriver.exe" dan memasukkannya ke dalam C: \ Windows \ system32 (yang selalu direferensikan oleh PATH). Kasar, tapi efektif.

Jordan Rieger
sumber
0

Jika Anda menggunakan gulp-protractorplugin, pastikan untuk memperbaruinya juga.

Ilya Vinogradov
sumber
0

Saya tidak tahu apakah Anda masih menggunakan ini, tetapi saya menerima kesalahan serupa. Saya memiliki chromedriver versi terbaru di PATH saya dan Google Chrome telah diupdate. Saya menjalankan Python 3.6 di windows 10 x64 bit. Apa yang saya coba untuk memilih nilai dari menu tarik-turun di halaman web. Yang aneh adalah, itu akan memilih nilai dropdown dengan benar dan halaman akan diperbarui dengan baik, tetapi saya tetap menerima kesalahan bodoh itu dan skrip saya akan macet. Jadi saya baru saja membuat penangan kesalahan pengecualian untuk itu, karena seperti yang saya katakan itu memilih nilai dropdown dengan benar, jadi saya hanya ingin melewati pesan kesalahan bodoh itu:

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

semoga seseorang menemukan ini bermanfaat.

Matt Wilson
sumber