如何将组合键发送到 selenium chromedriver?

How to send key combination to selenium chromedriver?

我正在使用 uirecorder 创建 mocha 测试用例来测试我的网络程序。我想发送一些组合键,例如 "Metakey + R"。但是我做不到。

这里是 ui 记录器生成步骤的示例:

it('sendKeys: {DOWN}', async function(){
    await driver.sendKeys('{DOWN}');
});

这非常有效。但我不知道如何发送组合键。 问题是我如何发送组合键,例如 ctrl+a(按住 ctrl 并按下 a 然后离开 ctrl)

我使用的解决方案:

我就是这样做的,效果很好。

await driver.sendKeys('{CTRL}a{CTRL}');

您可以使用 ActionSequence class 通过 Node.js 在 selenium 中执行操作。

对于按下 Left control + a,您可以像这样模拟鼠标操作:

new webdriver.ActionSequence(driver).keyDown(webdriver.Key.LEFT_CONTROL).sendKeys("a").keyUp(webdriver.Key.LEFT_CONTROL).perform();  

更多参考:
Reference 1

Reference 2

使用按键class:

String keypress = Keys.chord(Keys.CONTROL, "a");
driver.findElement(By.locator("value of locator")).sendKeys(keypress);

使用操作 class:

Actions action = new Actions(driver);  
action.keyDown(Keys.CONTROL).sendKeys("a").keyUp(Keys.CONTROL).perform();

我就是这样做的,效果很好。

await driver.sendKeys('{CTRL}a{CTRL}');

对于以后发现此问题的任何人,这里有一个对我有用的解决方案:

const {Key} = require('selenium-webdriver');

...

await driver.actions()
  .keyDown(Key.SHIFT)
  .sendKeys(Key.TAB)
  .keyUp(Key.SHIFT)
  .perform();