私が取り組んでいるテスト フレームワークの一部として、Chrome でキーボード イベントをシミュレートできるようにする必要があります。具体的には、INPUT 要素の値を入力する必要があります。これは Firefox では比較的簡単に実行できますが、何らかの理由で Chrome は生成されたイベントを無視します。(実際にそれらを無視しているわけではありません。以下を参照してください)
ここで、SOに関するいくつかの質問を確認しました。
- Chrome でのキーダウン シミュレーションは正常に起動しますが、正しいキーではありません
- プログラムでキー押下イベントをシミュレートすることは可能ですか?
- Chrome でキーボード イベントを発生させる
- JavaScript を使用して Safari でキーボード イベントを発生させる
問題は、イベントがディスパッチされていない (そうである) または受信されていない (そうである) ことではなく、Chrome が文字をフォーム要素に挿入していないことです。
JSBin でこの例を参照してください(上記のリストの最初の URL に基づいており、 which/keyCode == 0 問題の修正が含まれています)。
これらの生成された KeyboardEvents で Chrome は何をしていますか?また、シミュレートされたキーをフォーム要素に挿入するように説得する方法はありますか?
ノート:
- テスト フレームワークは本質的に Selenium に似ており、ユーザー操作の代わりにキーボードとマウスのイベントをシミュレートする必要があります。プロジェクトの性質上、このテスト フレームワークはカスタム ビルドする必要があり、現時点では Selenium を使用できません。
- 潜在的なソリューションは、サードパーティのライブラリを必要とせず、Chrome 23 以降で動作する必要があります
- 現時点では、キープレス イベントのリスナーを追加し、手動で文字を挿入しています。テスト時にこの余分なコードを挿入する必要があるため、これを避けたいと思います。