概要:Chromedriverは1台のマシンでは正常に動作しますが、他の2台の同じマシンでは非常に遅くなります。
セットアップ:
ローカルネットワーク上の3つの32ビットWin 7リモートマシン(そのうちの2つは仮想マシン)はすべてノードとして構成されています。次に、リモートマシンでノードを起動するために使用するコマンドを示します。
Java -jar c:\ seleniumWebDriver\seleniumGrid\Selenium-server-standalone-2.31.0.jar -role node -hub http://XXX.XXX.XXX.XXX:4444/grid/register -browser "browserName = chrome"、maxInstances = 4 -Dwebdriver.chrome.driver = "C:\ seleniumWebDriver\chromedriver.exe"
ドライバは、コード内から次のように起動されます。
DesiredCapabilities機能=新しいDesiredCapabilities(); capability.SetCapability(CapabilityType.BrowserName、browser);ドライバー=新しいRemoteWebDriver(新しいUri(hubUrl)、機能);
上記の変数「browser」と「hubUrl」は、実行時に構築されるapp.configファイルを介して渡されます。この場合、browser = chromeです。
問題:
上記のコマンドを使用して、マシン212(仮想マシン)をchromeノードとしてセットアップし、ハブからスクリプトを起動すると、chrome =適切なリモートマシンで起動し、通常どおり実行します。1秒あたり5〜10コマンドのフィールドです。
マシン78(仮想マシン)またはマシン103(実マシン)を同じ方法でノードとしてセットアップし、ハブからスクリプトを起動すると、ノードが起動するのがわかりますchromeただし、実行速度は非常に遅く、1秒あたり1コマンド以下です。
その他の情報:私が言ったように、1台のマシンではchromeは正常に動作しますが、他のマシンでは非常に遅く実行されます。 FirefoxおよびIEは、ノードとして構成されている場合、正常に動作します。
マシン212(適切に動作する)を他のマシンと比較したところ、違いがわかりません。すべてのマシンで「Selenium-server-standalone-2.31.0.jar」と同じバージョンのChromeDriverが使用されています。
ノードマシンが過負荷になっているようには見えません。また、これはパフォーマンスの非常に一貫した違いであり、ネットワークまたはマシンの変動する負荷とは関係がないようです。
私のネットワーク技術者は、これらすべてのマシンがネットワーク上で同一に構成されていることを確認しました。
これまでにこのようなものを見たことがありますか?
編集1:今日ログインして、3台すべてのリモートマシンがゆっくりと実行しているchrome。以前は正常でしたが、現在はすべてが低速です。
一部のマシンでchromedriverが遅いという同様の問題に遭遇し、それがプロキシの問題であることが判明しました。 Chrome:// settings> [プロキシ設定の変更]> [LAN設定]で[設定を自動的に検出する]を無効にすると、chromeでWebドライバーがコマンドをより速く実行できるようになりました。
私のプロキシ設定は自動検出を使用していませんでしたが、次のことが非常に役立つことがわかりました。ドライバーの起動にかかる時間が43秒から1秒に短縮されました
driver = new ChromeDriver(new ChromeOptions{Proxy = null});
chromedriverの問題のバグリンク これは、優先度が最も低く、長く続く問題です。しかし、より多くのユーザーがそれに投票すると、おそらく誰かがそれを修正するでしょう。 プロキシ設定の解析は標準に準拠していない にも関連している可能性があります。これはまもなく修正されます。