不明なエラー:Chromedriverのアップグレード後でも、関数呼び出しの結果にSelenium送信キーの「値」がありません


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を検索しますか?

何か案が ?


昨日からここで同じ問題。私の場合、私は(変更履歴は、それがクロムv61-63との互換性だと言う)の問題は、ヘッドレスクロムV65 +セレンドライバv2.34の組み合わせだと思う
ホルヘ・アレバロ

回答:


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マシンを使っています。
クリフチュー、

6
github.com/flavorjones/chromedriver-helper gem を使用している場合は、コンソールで実行chromedriver-update 2.36
Bachet

4
Homebrewを使用すると、次の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 chrome v65変更ログへの最近のコミットを見つけました。

解決:

  • Google Chromeを最新の安定したバージョンに更新します(私の場合、2018年3月9日のバージョンはv65です)
  • 最新のchromedriver(v2.36)をダウンロードして設定します。(Ubuntuで)chromedriverを構成するには、次の手順に従います...

    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

これは、Chromeブラウザのバージョンが64.xxから65.xxに更新されたためです

これで、テストを正常に実行するための2つのオプションがあります。

  1. Chromeブラウザを以前のバージョンにダウングレードし、現在使用している古いChromedriverを使用します。

  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の正確なパスに言及する必要があります。または、古いchromedriverを新しいものに置き換えます。確認してください。
Deepak N

Visual Studioでこのエラーが発生した場合は、Chrome WebドライバーのNugetパッケージを2.37(執筆時)にアップグレードすると、このエラーが解決します。
グナラティナム2018年

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);

これですべて完了です。

以下のリンクを参考にしてください -Browser Binary ManagerとはSeleniumでの使用方法

またはchkout gitプロジェクト-https ://github.com/bonigarcia/webdrivermanager#webdrivermanager-as-java-dependency


3
これは私のために働きました-2.37
Reily Bourne


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をサポート

Chrome v64-66をサポート

  • あなたのセレンクライアントのバージョンは、私たちには不明です。

したがって、ChromeDriverバージョン(v2.33)とChromeブラウザバージョン(v65.0)の間には明らかな不一致があります。)の

解決

  • Seleniumを現在のレベルのバージョン3.11.0にアップグレードします。
  • ChromeDriverChromeDriver v2.37レベルにアップグレードします。
  • キープクロームの間でバージョンをクロームv64.x-66.xレベル。(ChromeDriver v2.37リリースノートに従って
  • きれいにあなたのプロジェクトワークスペースをごを通じてIDEおよび再構築のみ必要な依存関係を持つプロジェクトを。
  • 使用する CCleanerツールを、テストスイートの実行前後にすべてのOSの雑用を一掃します。
  • ベースのWebブラウザー/ Webクライアントのバージョンが古すぎる場合は、Revo Uninstallerを使用してアンインストールします。をインストールし、最新のGAおよびリリースされたバージョンのWebブラウザ/ Webクライアントをインストールします。
  • を実行します@Test

5

Macを使用している場合:

brew upgrade selenium-server-standalone
brew upgrade chromedriver

上記の2つがインストールされていない場合:

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.エステベス2018

1
Use xpaths instead of class names to locate elements

クロムとそのドライバを更新した後、それは私をまったく助けませんでした!! どのくらい意味があるのか​​はわかりませんが、クラス名をxpathに置き換えたときにうまくいきました。これはxpathです。Pythonを使用して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.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

まだこの問題が発生しているかどうかはわかりませんが、同様のエラーが発生していました。PATHに最新バージョンのchromedriverがあり、Google Chromeが更新されました。Python 3.6をWindows 10 x64ビットで実行しています。Webページのドロップダウンメニューから値を選択しようとしていました。奇妙なことに、ドロップダウン値が正しく選択され、ページが適切に更新されますが、とにかくその愚かなエラーが表示され、スクリプトがフリーズします。ドロップダウン値が正しく選択されたと言ったので、私はそのために例外エラーハンドラーを作成しました。

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

うまくいけば、誰かがこれが役に立ったと思っています。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.