알 수없는 오류 : chromedriver 업그레이드 후에도 Selenium Send Keys에 대한 '값'이 누락 된 호출 함수 결과
키를 보안하는 동안 아래 오류가 발생합니다.
결과 메시지 :
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에 대한 코드 검색이 있습니까?
어떤 생각?
동일한 오류가 발생했습니다. 최신 ChromeDriver 버전을 다운로드하거나 Chrome 브라우저 버전을 업데이트하면 작동합니다. :)
https://chromedriver.storage.googleapis.com/index.html?path=2.36/
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을 최신 버전으로 업데이트합니다 (제 경우에는 2018 년 3 월 9 일의 v65).
최신 chromedriver (v2.36)를 다운로드하고 구성합니다. chromedriver를 구성 비용 (Ubuntu에서) 다음 단계를 점검세요.
- 다운로드 한 zip 파일을 추출합니다.
- 추출 된 chromedriver 파일을 / usr / local / bin 또는 일반적으로 실행 가능한 바이너리를 저장하는 위치에 복사합니다 .
- 환경 변수 PATH에 동일한 경로 (chromedriver 파일을 배치하는 위치)를 다음과 같이 추가합니다.
내보내기 PATH = $ PATH : / usr / local / bin
- 설치를 테스트하기 위해 터미널을 다시 시작하고 다음 명령을 입력하십시오.
chromedriver- 버전
방금 설치 한 chromedriver 버전이 표시됩니다.
참고 : chromedriver가 이미 설치되어있는 경우 기존 드라이버 파일을 교체하고 Chromedriver 바이너리가 이미 등록 된 위치를 모르는 경우 다음 명령을 사용하여 파일을 찾습니다.
sudo find -H / -type f -iname chromedriver
크롬 브라우저 버전이 64.xx에서 65.xx로 업데이트 되었기 때문입니다.
이제 테스트를 사용할 수 있습니다.
크롬 브라우저를 이전 버전과 현재 가지고있는 이전 크롬 드라이버로 다운 그레이드하세요.
업데이트 된 Chrome 브라우저를 사용하여 Chromedriver를 2.36 버전으로 업그레이드하세요.
https://chromedriver.storage.googleapis.com/index.html?path=2.36을 방문 하여 새 chromedriver를 다운로드 하세요 .
옵션 2가 더 좋습니다.
ChromeDriver.exe를 최신 버전으로 교체하세요. Google에서 쉽게 다운로드 할 수 있습니다.
또한 아래에 설명 된대로 webDriver 관리자를 사용하여 자동으로 수행하는 것이 좋습니다. 1. 프로젝트 POM에 Mvn 추가합니다.
<dependency>
<groupId>io.github.bonigarcia</groupId>
<artifactId>webdrivermanager</artifactId>
<version>${webdrivermanager.version}</version>
<scope>test</scope>
</dependency>
- 이제 브라우저 인스턴스화 클래스에서 System.setProperty (belwo 참조)를 사용하여 드라이버를 만드는 방법 을 사용하는 대신 ...
System.setProperty ( "webdriver.chrome.driver", "src / test / resources / drivers / chromedriver.exe");
아래 접근 방식을 사용하십시오.
WebDriverManager.chromedriver (). 설정 ();
webDriver = 새 ChromeDriver (chromeOptions);
그리고 그게 다입니다.
참조를 위해 아래 링크를 사용하십시오- 브라우저 바이너리 관리자는 무엇입니까 Selenium에 사용하는 방법
나에 대한 chkout 마이너스 프로젝트가 같 https://github.com/bonigarcia/webdrivermanager#webdrivermanager-as-java-dependency
chromedriver 업데이트 필요 : 콘솔에서 다음을 실행합니다. chromedriver-update 2.36
오류는 모든 것을 사실입니다.
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으로 업그레이드 하십시오 .
- ChromeDriver 를 ChromeDriver v2.37 수준으로 업그레이드 합니다.
- Chrome v64.x-66.x 수준 사이에 Chrome 버전을 유지 합니다. ( ChromeDriver v2.37 출시 노트에 따름 )
- 청소 당신의 프로젝트 작업을 당신을 통해 IDE 및 재 구축 에만 필요 종속성이 프로젝트를.
- CCleaner 도구를 사용 하여 테스트 스위트 실행 전후의 모든 OS 작업을 제거하십시오 .
- 기본 웹 브라우저 / 웹 클라이언트 버전이 너무 오래된 경우 Revo Uninstaller를 통해 제거 하고 최신 GA 및 웹 브라우저 / 웹 클라이언트 릴리스 버전을 설치하십시오 .
- 당신의 실행
@Test.
Mac을 사용하는 경우 :
brew upgrade selenium-server-standalone
brew upgrade chromedriver
위의 두 가지가 설치되지 않은 경우 :
brew install selenium-server-standalone
brew install chromedriver
Protractor를 실행 중이며 동일한 문제가 발생했습니다.
제 경우의 해결책은 다소 간단했습니다.
$ npm update protractor -g
$ webdriver-manager update
안정적인 최신 Chrome (예 : 67)을 사용중인 경우 다음을 권장합니다.
brew uninstall chromedriver
brew tap homebrew/cask
brew cask install chromedriver
이러한 명령 세트는 현재 크롬 드라이버를 제거하고 업데이트를 확인하며 발견 된 최신 버전 (예 : 2.40)을 설치합니다.
제 경우에는 우리가 가지고있는 특정 chromedriver 파일에 대한 포인트 셀레늄을 사용하는 팀입니다. Selenium이 업데이트 된 chromedriver를 사용하도록하려면 먼저 brew와 함께 설치 한 다음 Selenium이 찾는 위치를 가리키는 심볼릭 링크를 만들었습니다.
brew install chromedriver
ln -s /usr/local/Cellar/chromedriver/2.36/bin/chromedriver /path/where/selenium/expects/chromedriver
기회에 이것은 내가 추가 단계가 필요한 누군가에게 도움이 될 수 있습니다.
MacOS X를 사용하고 있습니다.
brew upgrade chromedriver
bundle exec chromedriver-upgrade
chromedriver-helper gem이 설치되어 있지만 숨겨져 있고 "bundle exec"접두사가 필요하거나 셸이 명령을 찾을 수 없습니다.
위의 문제가 해결되었습니다.
다른 사람들이 언급했듯이 최신 크롬 드라이버가 나를 위해 트릭을 수행했습니다. 드라이버를 수동으로 다운로드하고 appium에 새 chromedriver를 사용하도록 알리려면 다음 명령을 사용하면됩니다.
appium --chromedriver-executable /path/to/driver/chromedriver ....
Windows 환경에서 Selenium과 함께 Protractor (webdriver-manager)를 실행 중이며 다음을 수행해야했습니다.
webdriver-manager update --versions.chrome="2.36"(이것은 새로운 Chromedriver를 올바른 경로로 다운로드했지만 각도기에서 활성화하지 않았습니다.)- 값을에서 으로 편집
%userprofile%\AppData\Roaming\npm\node_modules\protractor\config.json하고 변경 했습니다 .chromedriver2.322.36 - 좋은 측정
chromedriver_2.32.exe을%userprofile%\AppData\Roaming\npm\node_modules\protractor\selenium위해 내 이전 을 삭제 하십시오 (필요한지 확실하지 않습니다.)
또는:
다른 Chromedriver 업데이트가 필요하게되었을 때 더 이상 이런 방식으로 업데이트 할 수 없었습니다. 구성 설정은 여전히 이전 경로와 파일 이름을 예상했으며 해당 설정을 변경할 위치를 알 수 없었습니다. 그래서 방금 최신 chromedriver의 이름을 "chromedriver.exe"로 변경하고 C : \ Windows \ system32 (항상 PATH에서 참조)에 고정했습니다. 조잡하지만 효과적입니다.
당신이 사용하는 경우 gulp-protractor플러그인을 확인뿐만 아니라 그것을 업데이트 할 수 있습니다.
여전히이 문제를 겪고 있는지 모르겠지만 비슷한 오류가 발생했습니다. 내 PATH에 최신 버전의 chromedriver가 있고 Google 크롬이 업데이트되었습니다. Windows 10 x64 비트에서 Python 3.6을 실행합니다. 웹 페이지의 드롭 다운 메뉴에서 값을 선택하려고했던 것입니다. 이상한 점은 드롭 다운 값을 올바르게 선택하고 페이지가 멋지게 업데이트된다는 것입니다.하지만 어쨌든 그 어리석은 오류가 발생하고 스크립트가 멈 춥니 다. 그래서 방금 예외 오류 처리기를 만들었습니다. 드롭 다운 값을 올바르게 선택했다고 말했듯이 멍청한 오류 메시지를 무시하고 싶었습니다.
# select by value
try:
select.select_by_value('100')
except:
pass
누군가가 도움이 되었기를 바랍니다.
이 문제는 chromedriver와 chrome 브라우저 버전이 일치하지 않기 때문입니다. 아래 링크는 크롬 브라우저 버전을 지원하는 chromedriver 버전을 지정합니다.
'IT' 카테고리의 다른 글
| 예외 안전을 위해 "범위가 지정된 동작"을 포함 할 수있는 수단으로 IDisposable 및 "사용"을 사용하는 것이 악의적입니까? (0) | 2020.08.10 |
|---|---|
| iOS 앱이 TestFlight 베타 설치를 통해 실행 중인지 실행에 확인하는 방법 (0) | 2020.08.10 |
| mongoose 대 mongodb (nodejs 모듈 / 확장), 어느 것이 더 낫입니까? (0) | 2020.08.10 |
| c # .net의 디렉토리에있는 모든 파일을 반복하는 방법은 무엇입니까? (0) | 2020.08.10 |
| C에서 Linux와 공유 메모리를 사용하는 방법 (0) | 2020.08.10 |