私は問題を満たし、そのセレンを押すと、このリストにないキーを押したままにすることはできません -セレンを使用して非修飾キー(スペースキー)を押して保持する方法は?
Keys.SHIFT,
Keys.CONTROL,
Keys.ALT,
Keys.META,
Keys.COMMAND,
Keys.LEFT_ALT,
Keys.LEFT_CONTROL,
Keys.LEFT_SHIFT
私のアプリケーションは、スペースキーを押すとホールドされている場合にのみ指示を示しています。私はこのためのブラウザテストを書いてみたい。
私はProtractorJSを使用していますが、他のキーにkeyDownを使用しようとすると、セレンのどこにでもそのようなアクションの一般的な制限のようです - このようなメッセージで例外が発生します - "Key Down/Upイベントのみ修飾キーの感覚。私は非修飾キーを押して保持することができますどのように https://github.com/SeleniumHQ/selenium/blob/master/javascript/webdriver/actionsequence.js#L301
と同じチェック:ここ
は、SeleniumのJavaコードへのリンクですか?私の場合はスペースキー。
更新日: Florent B. answerに感謝します。 少し修正した後、完全に動作します。フレームへの切り替えを追加し、私の場合には特定の要素の代わりにイベントをドキュメントにディスパッチしなければなりませんでした。
browser.switchTo().frame('workspace');
const SIMULATE_KEY =
"var e = new Event('keydown');" +
"e.keyCode = 32;" + //spacebar keycode
"e.which = e.keyCode;" +
"e.altKey = false;" +
"e.ctrlKey = false;" +
"e.shiftKey = false;" +
"e.metaKey = false;" +
"e.bubbles = true;" +
"document.dispatchEvent(e);";
browser.executeScript(SIMULATE_KEY);
興味深い - スペックの私の読書(https://w3c.github.io/webdriver/webdriver-spec.html #keyboard-actions)は現在の動作を強く正当化していないようです。 –