「永続的なホバー」と呼ばれるIEドライバーの機能のために、エレメントが点滅しています。この機能は疑わしい値ですが、SendMessage
APIを使用した場合、脳のような方法のIE(ブラウザではなく、ドライバ)responds to WM_MOUSEMOVE
messagesのために必要です。
あなたはいくつかの選択肢があります。あなたは、次のようなコードを使用することにより、オフ永続的なホバーを回すことができます。これはあなたがホバーしようとすると、物理的にマウスカーソルが画面に表示されているところの気まぐれの対象にできますようものの
InternetExplorerOptions options = new InternetExplorerOptions();
options.EnablePersistentHover = false;
IWebDriver driver = new InternetExplorerDriver(options);
は、注意してください。それが受け入れられない場合は、couple of other approachesがあります。まず、いわゆる「ネイティブイベント」をオフにすると、ドライバーは合成されたJavaScriptイベントのみに依存します。このアプローチには、マウスイベントを合成するためにJavaScriptのみに依存するため、独自の落とし穴があります。
InternetExplorerOptions options = new InternetExplorerOptions();
options.EnableNativeEvents = false;
IWebDriver driver = new InternetExplorerDriver(options);
最後に、あなたはより正確なSendInput
APIを使用するコードにデフォルトSendMessage
のWindows APIを使用してからの移行ができます。これはRequireWindowFocus
プロパティで行われます。その欠点は、マウス入力がシステム内の非常に低いレベルで注入されることであり、これはIEウィンドウがシステム上のフォアグラウンドウィンドウであることを必要とする。
InternetExplorerOptions options = new InternetExplorerOptions();
options.RequireWindowFocus = true;
IWebDriver driver = new InternetExplorerDriver(options);
最後に、これらのプロパティをすべて一度に設定しないでください。アプローチを選んでそれに固執する。それらのうちのいくつかは相互排他的であり、それらの間の相互作用は未定義である。
使用しているセレンのバージョンを教えてください。 – Karthikeyan
IE11は依然としてこの問題を抱えています。幸運にも、以下の解決策もまだ機能しています。 –