알 수없는 오류 : chromedriver 업그레이드 후에도 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 + 셀레늄 드라이버 버전 2.34의 조합이라고 생각 (변경 로그는 크롬 v61-63와 호환 말한다)
호르헤 아레발로

답변:


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에 연결 한 후 스크립트가 실제로 작동합니다. 그건 그렇고 나는 윈도우 머신을 사용하고 있습니다.
Cliff Chew

6
github.com/flavorjones/chromedriver-helper gem을 사용하는 경우 콘솔에서 실행chromedriver-update 2.36
Bachet

4
당신이 브루를 사용하는 경우, 당신은 실행할 수 있습니다brew upgrade chromedriver
디에고 카리에게

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 크롬을 최신 안정 버전으로 업데이트합니다 (제 경우에는 2018 년 3 월 9 일의 v65).
  • 최신 chromedriver (v2.36)를 다운로드하고 구성합니다. chromedriver를 구성하려면 (Ubuntu에서) 다음 단계를 따르세요.

    1. 다운로드 한 zip 파일을 추출합니다.
    2. 추출 된 chromedriver 파일을 / usr / local / bin 또는 일반적으로 실행 가능한 바이너리를 저장하는 위치에 복사합니다 .
    3. 환경 변수 PATH에 동일한 경로 (chromedriver 파일을 배치하는 위치)를 다음과 같이 추가합니다.

내보내기 PATH = $ PATH : / usr / local / bin

  1. 설치를 테스트하려면 터미널을 다시 시작하고 다음 명령을 입력하십시오.

chromedriver-버전

방금 설치 한 chromedriver 버전이 표시됩니다.

참고 : chromedriver가 이미 설치 및 구성된 경우 기존 드라이버 파일을 교체하고 Chromedriver 바이너리가 이미 저장된 위치를 모르는 경우 다음 명령을 사용하여 파일을 찾습니다.

 sudo find -H / -type f -iname chromedriver

13

크롬 브라우저 버전이 64.xx에서 65.xx로 업데이트 되었기 때문입니다.

이제 테스트를 성공적으로 실행할 수있는 두 가지 옵션이 있습니다.

  1. 크롬 브라우저를 이전 버전과 현재 가지고있는 이전 크롬 드라이버로 다운 그레이드하세요.

  2. 업데이트 된 Chrome 브라우저를 사용하여 Chromedriver를 2.36 버전으로 업그레이드하세요.

    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 패키지를 2.37 (작성 당시)로 업그레이드하면이 오류가 해결됩니다.
Gunarathinam

12

ChromeDriver.exe를 최신 버전으로 교체하세요. Google에서 쉽게 다운로드 할 수 있습니다.

또한 아래에 설명 된대로 webDriver 관리자를 사용하여 자동으로 수행하는 것이 더 좋습니다. 1. 프로젝트 POM에 Mvn 종속성을 추가합니다.

<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 (). setup ();
webDriver = new ChromeDriver (chromeOptions);

그리고 그게 전부입니다!

참조를 위해 아래 링크를 사용하십시오- 브라우저 바이너리 관리자는 무엇입니까 Selenium에 사용하는 방법

또는 chkout git project for same- https://github.com/bonigarcia/webdrivermanager#webdrivermanager-as-java-dependency


3
이것은 나를 위해 일했습니다 -2.37에
Reily Bourne

예, 이제 최신 버전은 ChromeDriver 2.38-chromedriver.chromium.org/downloads
Satyendra 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 에 대해 명확하게 불평 합니다.

주요 문제는 다음과 같이 사용중인 바이너리 간의 버전 호환성입니다 .

  • chromedriver = 2.33을 사용 중입니다.
  • chromedriver = 2.33 의 출시 노트 에는 다음 내용이 명시되어 있습니다.

Chrome v60-62 지원

  • 당신은 사용하고 있습니다 크롬 = 65.0을
  • ChromeDriver v2.37 출시 노트 에는 다음 내용이 명시되어 있습니다.

Chrome v64-66 지원

  • 귀하의 셀레늄 클라이언트 버전은 우리에게 알려져 있지 않다.

따라서 ChromeDriver 버전 ( v2.33 )과 Chrome 브라우저 버전 ( v65.0 ) 간에 분명한 불일치가 있습니다. )

해결책

  • Selenium 을 현재 레벨 버전 3.11.0으로 업그레이드 하십시오 .
  • ChromeDriverChromeDriver v2.37 수준으로 업그레이드 합니다.
  • Chrome v64.x-66.x 레벨 사이에 Chrome 버전을 유지 합니다. ( ChromeDriver v2.37 출시 노트에 따름 )
  • 청소 당신의 프로젝트 작업을 당신을 통해 IDE재 구축 에만 필요 종속성이 프로젝트를.
  • CCleaner 도구를 사용 하여 테스트 스위트 실행 전후의 모든 OS 집안일을 지우십시오 .
  • 기본 웹 브라우저 / 웹 클라이언트 버전이 너무 오래된 경우 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플러그인을 확인뿐만 아니라 그것을 업데이트 할 수 있습니다.
Ilya Vinogradov

2

안정적인 최신 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 메시지 전송을 자동화하는 데 사용되었습니다.

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 gem이 설치되어 있지만 숨겨져 있으며 "bundle exec"접두사가 필요하거나 셸이 명령을 찾을 수 없습니다.

위의 문제가 해결되었습니다.


0

다른 사람들이 언급했듯이 최신 chromedriver가 나를 위해 트릭을 수행했습니다. 드라이버를 수동으로 다운로드하고 appium에 새 chromedriver를 사용하도록 알리려면 다음 명령을 사용하면됩니다.

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


0

Windows 환경에서 Selenium과 함께 Protractor (webdriver-manager)를 실행 중이며 다음을 수행해야했습니다.

  1. webdriver-manager update --versions.chrome="2.36" (이것은 새로운 Chromedriver를 올바른 경로로 다운로드했지만 각도기에서 활성화하지 않았습니다.)
  2. 값을에서 으로 편집 %userprofile%\AppData\Roaming\npm\node_modules\protractor\config.json하고 변경 했습니다 .chromedriver2.322.36
  3. 좋은 측정 chromedriver_2.32.exe%userprofile%\AppData\Roaming\npm\node_modules\protractor\selenium위해 이전 에서 삭제 하십시오 (필요한지 확실하지 않습니다.)

또는:

다른 Chromedriver 업데이트가 필요하게되었을 때 더 이상 이런 방식으로 업데이트 할 수 없었습니다. 구성 설정은 여전히 ​​이전 경로와 파일 이름을 예상했으며 해당 설정을 변경할 위치를 알 수 없었습니다. 그래서 최신 chromedriver의 이름을 "chromedriver.exe"로 변경하고 C : \ Windows \ system32 (항상 PATH에서 참조)에 고정했습니다. 조잡하지만 효과적입니다.



0

여전히이 문제를 겪고 있는지 모르겠지만 비슷한 오류가 발생했습니다. PATH에 최신 버전의 chromedriver가 있고 Google Chrome이 업데이트되었습니다. Windows 10 x64 비트에서 Python 3.6을 실행합니다. 웹 페이지의 드롭 다운 메뉴에서 값을 선택하려고했던 것입니다. 이상한 점은 드롭 다운 값을 올바르게 선택하고 페이지가 멋지게 업데이트되지만 어쨌든 그 어리석은 오류가 발생하고 스크립트가 멈췄다는 것입니다. 그래서 방금 예외 오류 처리기를 만들었습니다. 드롭 다운 값을 올바르게 선택했다고 말했듯이 멍청한 오류 메시지를 무시하고 싶었습니다.

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

누군가가 도움이 되었기를 바랍니다.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.