1

Selenium でキーボード ショートカットを使用して UI 機能を実行し、Keys.chord() を使用してキーの同時押しをシミュレートしてきました。Firefox と Chrome では問題なく動作しますが、Internet Explorer では動作しません。IE では、キーを押すたびに、まとめてではなく個別に実行されるようです。

次の行は、Firefox と Chrome では機能しますが、IE では機能しません。 driver.findElement(By.id(id)).sendKeys(Keys.chord(Keys.SHIFT, Keys.ARROW_LEFT));

また、IE で Actions クラスを試しましたが、役に立ちませんでした。

Actions builder = new Actions(driver);
builder.keyDown(driver.findElement(By.id(id)), Keys.SHIFT).sendKeys(Keys.ARROW_LEFT).perform();

誰かがこれの回避策を見つけるのを手伝ってくれるなら(または、それがうまくいくはずで、私が間違っているだけなら)、それは大歓迎です! ありがとう。

4

2 に答える 2

0

今日、同様の問題を投稿しました。セレンのソリューションを思い付くことができなかったので、代わりにこの回避策を使用しました:

import java.awt.Robot
...
Robot robot;
try { 
  robot = new Robot();          
  robot.keyPress(KeyEvent.VK_SHIFT);
  robot.keyPress(KeyEvent.VK_ARROW_LEFT);
  robot.keyRelease(KeyEvent.VK_ARROW_LEFT);
  robot.keyRelease(KeyEvent.VK_SHIFT);
}catch (AWTException e) {
  e.printStackTrace();
}

それが役立つことを願っています

于 2013-01-23T17:04:14.370 に答える
0

デフォルトのオプションを持つ現在のドライバー (2.45) は、修飾キーをシミュレートするのに信頼できない PostMessage を使用します [1] [2]。IE オプション "RequireWindowFocus" を true に設定すると、ドライバーは代わりに SendInput を使用します。

C# を使用している場合は、次のようにドライバーを作成します。

var options = new InternetExplorerOptions();
options.RequireWindowFocus = true;

var driver = new InternetExplorerDriver(options);
  1. http://blogs.msdn.com/b/oldnewthing/archive/2005/05/30/423202.aspx
  2. PostMessage WM_KEYDOWN 乗算キーを送信しますか?
于 2015-04-28T15:35:42.587 に答える