4

我正在使用 webdriver Action来执行一些组合键:

new Actions(getWebDriver()).sendKeys(Keys.CONTROL, ..).perform();

我的问题是Keys.CONTROL执行操作后仍然激活。在一些新的点击之后,我的浏览器上有新的打开选项卡和奇怪的行为,因为密钥仍然被激活。如何释放密钥?谢谢。

4

3 回答 3

1

建立一系列动作,然后执行它们。一个有用的演示如何释放控制键是通过模拟按键来移除附加栏Control+/,然后发送keyUp消息以释放按住的Control键:

WebDriver driver = getDriver();
String handle = driver.getWindowHandle();

// Remove the "add-on" bar.
driver.switchTo().defaultContent();
Actions actions = new Actions( driver );
actions
  .sendKeys( Keys.CONTROL, Keys.DIVIDE )
  .keyUp( Keys.CONTROL )
  .build()
  .perform();

// Return back to whatever window was first selected.
driver.switchTo().window( handle );
于 2014-03-19T04:47:23.330 回答
0

尝试使用Keys.chord(). 根据文档

模拟在“和弦”中一次按下多个键。接受一系列 Keys.XXXX 或字符串;将每个值附加到一个字符串,并添加和弦终止键 (Keys.NULL) 并返回结果字符串。注意:当低级 webdriver 键处理程序看到 Keys.NULL 时,活动修饰键 (CTRL/ALT/SHIFT/etc) 通过 keyup 事件释放。

所以Keys.NULL使用和弦自动附加的那个应该释放控制。

解决方案

new Actions(getWebDriver()).sendKeys(Keys.chord(Keys.CONTROL, ...)).perform();
于 2014-05-30T00:21:25.587 回答
0

对我来说,只有这样的解决方法有帮助:

new Actions(selenium).sendKeys(Keys.ESCAPE).perform();
于 2015-07-07T09:25:29.177 回答