ข้อผิดพลาดที่ไม่รู้จัก: ผลลัพธ์ของฟังก์ชันการโทรไม่มี 'value' สำหรับ Selenium Send Keys แม้ว่าจะอัปเกรด Chromedriver แล้วก็ตาม


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 (การเปลี่ยนแปลงบอกว่าเข้ากันได้กับ chrome v61-63)
Jorge Arévalo

คำตอบ:


115

ฉันได้รับข้อผิดพลาดเดียวกันโปรดดาวน์โหลด ChromeDriver เวอร์ชันล่าสุดและ / หรืออัปเดตเวอร์ชันเบราว์เซอร์ Chrome และจะใช้งานได้ดี :)

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


1
ฉันได้ดาวน์โหลดและเรียกว่า Nuget และลบการอ้างอิงทั้งหมดเป็น 2.33 แต่ยังเชื่อมต่อกับ 2.33 อันเก่าอยู่หรือไม่
Zaki Ahmed

2
ฉันดาวน์โหลด chromedriver 2.36 ใหม่ล่าสุดและยังใช้งานไม่ได้กับ Chrome เวอร์ชัน 65.0.3325.146 (รุ่นอย่างเป็นทางการ) (64 บิต) อย่างน้อยบน Mac OS :(
neliCZka

2
โอ้ขอโทษจริงๆฉันกำหนดค่าเส้นทางของฉันผิดและหลังจากที่ฉันเชื่อมโยงกับ Chromedriver ใหม่สคริปต์ของฉันก็ใช้งานได้จริงแล้ว ฉันใช้เครื่อง windows อยู่ข้างทาง
Cliff Chew

6
หากคุณใช้github.com/flavorjones/chromedriver-helper gem ให้รันใน consolechromedriver-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 - รุ่น

มันจะแสดงเวอร์ชันของ chromedriver ที่คุณเพิ่งติดตั้ง

หมายเหตุ: หากติดตั้งและกำหนดค่า chromedriver แล้วเพียงแค่แทนที่ไฟล์ไดรเวอร์ที่มีอยู่และหากคุณไม่ทราบว่าไบนารี Chromedriver เก็บไว้ที่ใดแล้วให้ลองค้นหาไฟล์โดยใช้คำสั่งต่อไปนี้

 sudo find -H / -type f -iname chromedriver

13

เป็นเพราะการอัปเดตเวอร์ชันเบราว์เซอร์ Chrome จาก 64.xx เป็น 65.xx

ตอนนี้คุณมี 2 ตัวเลือกในการดำเนินการทดสอบของคุณให้สำเร็จ

  1. ดาวน์เกรดเบราว์เซอร์ Chrome ของคุณเป็นเวอร์ชันก่อนหน้าและด้วย Chromedriver รุ่นเก่าที่คุณมีอยู่ตอนนี้

  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 และฉันยังคงได้รับข้อผิดพลาดที่แน่นอนด้านบน ฉันต้องเปลี่ยนอะไรบ้าง? อย่างไรก็ตามข้อผิดพลาดบอกว่าฉันใช้ chromedriver เวอร์ชัน 2.33.506092 ...
Armin

คุณต้องพูดถึงเส้นทางที่แน่นอนของ 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 (ดู belwo) ...

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

ใช้แนวทางด้านล่าง:

WebDriverManager.chromedriver () การตั้งค่า ();
webDriver = ChromeDriver ใหม่ (chromeOptions);

และนั่นคือทั้งหมดที่คุณทำเสร็จแล้ว!

ใช้ลิงค์ด้านล่างสำหรับการอ้างอิงของคุณ - Browser Binary Manager คืออะไรวิธีใช้สำหรับ Selenium

หรือโครงการ chkout git เดียวกัน - https://github.com/bonigarcia/webdrivermanager#webdrivermanager-as-java-dependency


3
สิ่งนี้ใช้ได้ผลสำหรับฉัน - ดาวน์โหลดสำหรับ 2.37 ได้ที่นี่: chromedriver.storage.googleapis.com/index.html?path=2.37
Reily Bourne

ใช่และตอนนี้ล่าสุดคือ - ChromeDriver 2.38 - chromedriver.chromium.org/downloads
Satyendra Sharma


9

ข้อผิดพลาดกล่าวทั้งหมด:

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

ข้อผิดพลาดบ่นอย่างชัดเจนเกี่ยวกับInvalidOperationException

ปัญหาหลักของคุณคือความเข้ากันได้ของเวอร์ชันระหว่างไบนารีที่คุณใช้ดังต่อไปนี้:

  • คุณกำลังใช้chromedriver = 2.33
  • บันทึกประจำรุ่นของchromedriver = 2.33กล่าวถึงสิ่งต่อไปนี้อย่างชัดเจน:

รองรับChrome v60-62

  • คุณกำลังใช้chrome = 65.0
  • บันทึกประจำรุ่นของChromeDriver v2.37กล่าวถึงสิ่งต่อไปนี้อย่างชัดเจน:

รองรับChrome v64-66

  • เราไม่รู้จักเวอร์ชันไคลเอนต์ซีลีเนียมของคุณ

จึงมีไม่ตรงกันชัดเจนระหว่างChromeDriverรุ่น ( v2.33 ) และเบราว์เซอร์ Chromeรุ่น ( v65.0 )

สารละลาย

  • อัพเกรดซีลีเนียมให้อยู่ในระดับปัจจุบันเวอร์ชั่น 3.11.0
  • อัปเกรดChromeDriverเป็น ระดับChromeDriver v2.37
  • ให้Chromeรุ่นในระหว่างChrome v64.x-66.xระดับ ( ตามบันทึกย่อประจำรุ่น ChromeDriver v2.37 )
  • ทำความสะอาดของพื้นที่ทำงานของโครงการผ่านIDEและสร้างโครงการของคุณด้วยการอ้างอิงที่จำเป็นเท่านั้น
  • ใช้เครื่องมือCCleanerเพื่อล้างงาน OS ทั้งหมดก่อนและหลังการทำงานของชุดทดสอบของคุณชุดทดสอบ
  • ถ้าฐานของคุณไคลเอ็นต์เว็บเบราว์เซอร์ / เว็บรุ่นเก่าเกินไปแล้วถอนการติดตั้งมันผ่านRevo Uninstallerและติดตั้งรุ่นล่าสุด GA และปล่อยของเว็บเบราว์เซอร์ / Web Client
  • ดำเนินการไฟล์@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ปลั๊กอินอย่าลืมอัปเดตด้วย
Ilya Vinogradov

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

ในกรณีของฉันทีมฉันกำลังชี้ซีลีเนียมไปยังไฟล์โครเมี่ยมไดรเวอร์เฉพาะที่เรามี เพื่อให้ซีลีเนียมใช้โครเมี่ยมไดร์เวอร์ที่ได้รับการปรับปรุงก่อนอื่นฉันได้ติดตั้งด้วยการชงแล้วสร้างลิงก์สัญลักษณ์เพื่อชี้ไปที่ซีลีเนียมมองหา:

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 gem แล้ว แต่มันถูกซ่อนไว้และต้องใช้คำนำหน้า "bundle exec" หรือเชลล์ไม่พบคำสั่ง

ข้างต้นแก้ไขปัญหาของฉัน


0

ดังที่คนอื่น ๆ กล่าวถึง Chromedriver ล่าสุดได้หลอกลวงฉัน ในกรณีที่คุณดาวน์โหลดไดรเวอร์ด้วยตนเองและต้องการบอกให้ appium ใช้ chromedriver ใหม่คุณสามารถทำได้โดยคำสั่งนี้:

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 ล่าสุดเป็น "chromedriver.exe" และติดอยู่ใน C: \ Windows \ system32 (ซึ่งอ้างอิงโดย PATH เสมอ) หยาบคาย แต่มีประสิทธิภาพ



0

ฉันไม่รู้ว่าคุณยังใช้อยู่หรือเปล่า แต่ฉันได้รับข้อผิดพลาดที่คล้ายกัน ฉันมี chromedriver เวอร์ชันล่าสุดใน PATH ของฉันและ Google Chrome ได้รับการอัปเดตแล้ว ฉันรัน Python 3.6 บน windows 10 x64 บิต สิ่งที่ฉันพยายามเลือกค่าจากเมนูแบบเลื่อนลงบนหน้าเว็บ สิ่งที่แปลกคือมันจะเลือกค่าแบบเลื่อนลงอย่างถูกต้องและหน้าจะได้รับการอัปเดตอย่างดี แต่ฉันได้รับข้อผิดพลาดโง่ ๆ อยู่ดีและสคริปต์ของฉันจะหยุดทำงาน ดังนั้นฉันจึงสร้างตัวจัดการข้อผิดพลาดข้อยกเว้นสำหรับมันเพราะอย่างที่ฉันบอกว่ามันเลือกค่าแบบเลื่อนลงอย่างถูกต้องดังนั้นฉันแค่ต้องการข้ามข้อความแสดงข้อผิดพลาดที่เป็นใบ้:

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

หวังว่าจะมีคนพบว่าสิ่งนี้เป็นประโยชน์


0

ปัญหาเกิดจากความไม่ตรงกันในเวอร์ชันของเบราว์เซอร์ Chromedriver และ Chrome ลิงค์ด้านล่างระบุเวอร์ชันของ chromedriver ที่รองรับเวอร์ชันของเบราว์เซอร์ Chrome

http://chromedriver.chromium.org/downloads

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.