こんにちは、現在、ページが読み込まれるときに特定のフィールドにフォーカスがあるかどうかを調べています。 これを行う方法についてはどこにも見つかりませんでした。 基本的には、ページ内の特定の要素にフォーカスがあるかどうかをチェックします。 これをチェックする方法はありますか?UIテスト{Capybara + Cucumber}:特定のテキストボックスにフォーカスがあるかどうかを確認する方法
ありがとうございました。
こんにちは、現在、ページが読み込まれるときに特定のフィールドにフォーカスがあるかどうかを調べています。 これを行う方法についてはどこにも見つかりませんでした。 基本的には、ページ内の特定の要素にフォーカスがあるかどうかをチェックします。 これをチェックする方法はありますか?UIテスト{Capybara + Cucumber}:特定のテキストボックスにフォーカスがあるかどうかを確認する方法
ありがとうございました。
document.activeElement
はそれを示しますが、そのプロパティは現代のブラウザでのみ利用可能です。
何がフォーカスしているかを教える方法はありません。
私が知っている唯一の方法と私が使用する方法は次のとおりです。私はすべてのテキスト要素を含むベースウィジェットにフォーカスとブラーイベントを付け、それを自分自身のトラックにします。
要素にJQueryでフォーカスがあるかどうかをテストする最適な方法は、.is( ':focus')コマンドを使用するか、$( ':focus')を使用してフォーカスのある要素を選択することです。しかし、Capybara WebkitやSeleniumは、ブラウザ自体がテスト時にOSに焦点を当てていないため、すべての要素にフォーカスがないことを常に伝えるため、Capybaraでは不可能です。
しかし、私はこの問題の解決策を見つけて、テストを実行する際にこの問題を解決する簡単なスクリプトを開発しました。問題は、ブラウザのネイティブマッチとクエリセレクタがオペレーティングシステムに対応していることにあります。つまり、ブラウザとWebページタブにオペレーティングシステム内のフォーカスがない場合、フォーカスセレクタはドキュメント内の項目と一致しません。私はこれを回避するためにJQueryの内部を突っ込んできました。これはJQueryにSizzleを使用させ、ブラウザのネイティブ関数を使用してセレクタクエリを最適化しないことによって簡単に行うことができます。
あなたがJQueryを組み込む前に以下のスクリプトhttps://gist.github.com/1166821を含めると、あなたのSeleniumテストはフォーカステストに合格します。問題の完全な書き込みまで、ソリューションとどのようにテストを実行するため
、この同じ問題を持っている人を助けhttp://blog.mattheworiordan.com/post/9308775285/testing-focus-with-jquery-and-selenium-or
希望を確認してください。