スクリプトが次を使用してテキストフィールドに入力するときに、IE 11
を使用してSelenium 2.43.1
ブラウザでスクリプトの1つを実行しています。
element.sendKeys("string");
IEブラウザーでは、文字列の1文字がテキストフィールドに入力され、次の文字を入力する前に1〜2秒待機することがわかります。 1文字を入力する手段は1〜2秒かかります。
私の問題はドライバーのアーキテクチャにあり、32ビット版をダウンロードして使用することで修正しました。
ここで32ビットに切り替えるには、あなたがしなければならないことです
InterExplorerWeDriver
クラスと32ビットドライバーサービスへのパスを使用して、InternetExplorerDriverService
クラスをインスタンス化します。
InternetExplorerDriver ieDiver = new InternetExplorerDriver(“Path to the 32 bit Explorer driver”);
またはビルダーを使用している場合は:
System.setProperty(“webdriver.ie.driver”,“C:\\drivers\\IEDriverServer.exe”);
DesiredCapabilities ieCapabilities=DesiredCapabilities.internetExplorer();
ieCapabilities.setCapability(InternetExplorerDriver
.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS,true);
ieCapabilities.setCapability("requireWindowFocus", true);
File ie_temp=newFile(“C:\\Selenium\\IEDrivertemp”);
InternetExplorerDriverService.Builder
ies=newInternetExplorerDriverService.Builder();
ies.withExtractPath(ie_temp);
InternetExplorerDriverService service=ies.build();
WebDriver driver=newInternetExplorerDriver(service,ieCapabilities))
解決に役立ったスレッド
http://forumsqa.com/question/typing-too-slow-in-text-fields-while-replaying-tests/
私にとっては、64ビットバージョンのIEDriverServerで動作しました。 「true」値を持つrequireWindowFocusプロパティを追加しました。
DesiredCapabilities capabilities = DesiredCapabilities.internetExplorer();
capabilities.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS, true);
...
capabilities.setCapability("requireWindowFocus", true);
WebDriver driver = new InternetExplorerDriver(capabilities);
Selenium/IEドライバーのバージョン2.47を使用しています
64ビットWebDriverの場合
2ビットWebDriverの場合:
奇妙なことに:
私のセットアップ:Windows 10、IE 11、すべて64ビット、Selenium 3.4
これにより、少し速くなりました。 IEDriverServer 2.53.1
InternetExplorerOptions options = new InternetExplorerOptions();
options.IntroduceInstabilityByIgnoringProtectedModeSettings = true;
options.RequireWindowFocus = true;
driver = new InternetExplorerDriver(options);
32ビットバージョンに変更できますが、64ビットが必要な場合は、このソリューションを試すことができます。
これにより、64ビットIEでカタツムリを入力する必要がなくなります。
IEDriverServerの64ビットバージョンを使用すると、同じ問題が発生しました。 32ビットに変更すると、正常に機能しました。
私も同じ問題を抱えていました。試してみることができます
[インターネットオプション]-> [接続]-> [LAN設定]-> [チェックを外す] 設定を自動的に検出する。
お役に立てれば。
IE11 64ビットで実行されているテストでは、NATIVE_EVENTS
機能をfalse
に設定するとうまくいきました。これがないと、報告されているように64ビットドライバーサーバー3.0の使用が非常に遅くなりました。 32ビット3.0ドライバーサーバーは、送信するはずの文字の一部を飲み込みました(たとえば、「FluentLenium」が「FlntLnum」になりました)。
以下は両方の問題を解決しました。
DesiredCapabilities capabilities = DesiredCapabilities.internetExplorer();
capabilities.setCapability(InternetExplorerDriver.NATIVE_EVENTS, false);
WebDriver driver = new InternetExplorerDriver(capabilities);
これに追加の副作用があるかどうかはわかりません。
Windows x64ビット上のIE11でも同じ問題に直面しました。 IEDriverServer.exeの64ビットバージョン(IEドライバー-3.7.0とSelenium-3.7.0)を使用していました。
IEDriverServer.exeの32ビットバージョンに変更した後、問題を解決しました
キー送信機能の速度を改善するには、以下の手順を実行できます。
スムーズに動作します。
NATIVE_EVENTを無効にすると問題が解決しました
DesiredCapabilities capabilities = DesiredCapabilities.internetExplorer();
capabilities.setCapability(InternetExplorerDriver.NATIVE_EVENTS, false);
driver = new InternetExplorerDriver(capabilities);
32ビットバージョンに変更できます。64ビットと比較すると速度が速くなります。
WebEelement.send.keysの代わりに、sendKeysメソッドでActionsオブジェクトを使用しました。これは魅力的でした。
私は見つけるためにほぼ一日苦労しました。これは、64ビットのIEドライバーサーバー(IEDriverServer_x64_2.53.1
)が原因です。
私はIEDriverServer_Win32_2.53.1
に切り替えた後、動作しました。今では超高速です!
これはおそらく、テストを実行しているマシンの問題です。コンピュータで一般的な遅延が発生した場合、これが発生します。
入力を高速化する別の方法はありますか?
もちろん、テキストをクリアするカスタムメソッドを作成してから、JavaScriptを使用してフィールドを埋めることができます。 (これを行うと、「タイプアヘッド」や「入力中の提案」などと連携できない場合があることに注意してください)