web-dev-qa-db-ja.com

IEブラウザのテキストフィールドでのSelenium WebDriverの入力が非常に遅い

スクリプトが次を使用してテキストフィールドに入力するときに、IE 11を使用してSelenium 2.43.1ブラウザでスクリプトの1つを実行しています。

element.sendKeys("string");

IEブラウザーでは、文字列の1文字がテキストフィールドに入力され、次の文字を入力する前に1〜2秒待機することがわかります。 1文字を入力する手段は1〜2秒かかります。

  1. IEでタイピングが非常に遅いのはなぜですか?
  2. 入力を高速化する別の方法はありますか?
53
TDHM

私の問題はドライバーのアーキテクチャにあり、32ビット版をダウンロードして使用することで修正しました。

ここで32ビットに切り替えるには、あなたがしなければならないことです

  1. http://Selenium-release.storage.googleapis.com/index.html から32ビットドライバーサービスをダウンロードします
  2. 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/

50
Master Slave

私にとっては、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を使用しています

32
Stasilla

64ビットWebDriverの場合

  1. IEを開く
  2. インターネットオプション→詳細設定→セキュリティに移動します
  3. チェック☑拡張保護モードの64ビットプロセスを有効にする
  4. [適用]をクリックして[OK]

2ビットWebDriverの場合:

  1. IEを開く
  2. インターネットオプション→詳細設定→セキュリティに移動します
  3. チェックボックスをオフにしますfor拡張保護モードの64ビットプロセスを有効にします
  4. [適用]をクリックして[OK]

奇妙なことに:

  • 拡張保護モードがアクティブになっているかどうかに関係なく、設定は必要でした。
  • ダイアログに表示されるテキスト以外には、コンピューターを再起動する必要はありませんでした。

私のセットアップ:Windows 10、IE 11、すべて64ビット、Selenium 3.4

16
Marcus

これにより、少し速くなりました。 IEDriverServer 2.53.1

InternetExplorerOptions options = new InternetExplorerOptions();
options.IntroduceInstabilityByIgnoringProtectedModeSettings = true;
options.RequireWindowFocus = true;
driver = new InternetExplorerDriver(options);
11
Demodave

32ビットバージョンに変更できますが、64ビットが必要な場合は、このソリューションを試すことができます。

  • インターネットオプション->セキュリティ->すべてのゾーンの[保護モードを有効にする]をオンにします
  • [詳細設定]-> [セキュリティ]-> [拡張保護モードを有効にする]を選択します

これにより、64ビットIEでカタツムリを入力する必要がなくなります。

6
Viet Pham

IEDriverServerの64ビットバージョンを使用すると、同じ問題が発生しました。 32ビットに変更すると、正常に機能しました。

ソース: WebDriverおよびIE10の非常に遅い入力

2
Jamie Rees

私も同じ問題を抱えていました。試してみることができます

[インターネットオプション]-> [接続]-> [LAN設定]-> [チェックを外す] 設定を自動的に検出する

お役に立てれば。

2
Vivek Singh

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

これに追加の副作用があるかどうかはわかりません。

2
wwerner

Windows x64ビット上のIE11でも同じ問題に直面しました。 IEDriverServer.exeの64ビットバージョン(IEドライバー-3.7.0とSelenium-3.7.0)を使用していました。

IEDriverServer.exeの32ビットバージョンに変更した後、問題を解決しました

1
Srikanth Gurram

キー送信機能の速度を改善するには、以下の手順を実行できます。

  1. プロジェクトに移動->プロパティ-> Javaコンパイラ-> Javaコンプライアンスの下で-使用コンプライアンスオプションを選択解除し、コンパイルコンプライアンスレベルを1.7に変更してからクリックして適用します。

スムーズに動作します。

0
Ruchi Dahiya

NATIVE_EVENTを無効にすると問題が解決しました

 DesiredCapabilities capabilities = DesiredCapabilities.internetExplorer();
 capabilities.setCapability(InternetExplorerDriver.NATIVE_EVENTS, false);
 driver = new InternetExplorerDriver(capabilities);
0
Naren Chejara

32ビットバージョンに変更できます。64ビットと比較すると速度が速くなります。

0
Sivananda Reddy

WebEelement.send.keysの代わりに、sendKeysメソッドでActionsオブジェクトを使用しました。これは魅力的でした。

0
Nisim Naim

私は見つけるためにほぼ一日苦労しました。これは、64ビットのIEドライバーサーバー(IEDriverServer_x64_2.53.1)が原因です。

私はIEDriverServer_Win32_2.53.1に切り替えた後、動作しました。今では超高速です!

0
S Kotra

これはおそらく、テストを実行しているマシンの問題です。コンピュータで一般的な遅延が発生した場合、これが発生します。

入力を高速化する別の方法はありますか?

もちろん、テキストをクリアするカスタムメソッドを作成してから、JavaScriptを使用してフィールドを埋めることができます。 (これを行うと、「タイプアヘッド」や「入力中の提案」などと連携できない場合があることに注意してください)

0
ddavison