我一直在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();
如果有人可以帮我解决这个问题的解决方法(或者它应该正常工作并且我做错了),我们将不胜感激!感谢。
答案 0 :(得分:0)
我发布了similar issue earlier today。 无法提出硒解决方案,因此使用此解决方法:
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();
}
希望可以提供帮助
答案 1 :(得分:0)
具有默认选项的当前驱动程序(2.45)使用PostMessage,这对于模拟修饰键[1] [2]是不可靠的。如果您设置IE选项" RequireWindowFocus"如果为true,那么驱动程序将使用SendInput代替它将起作用。
如果使用C#,您可以像这样创建驱动程序:
var options = new InternetExplorerOptions();
options.RequireWindowFocus = true;
var driver = new InternetExplorerDriver(options);