Key.chord还是ActionSequence?

时间:2016-02-16 16:57:50

标签: javascript selenium-webdriver

我需要模拟按CTRL + CCTRL + V等等。 Selenium为我们提供了两种方法: webdriver.Key.chord(var_args),例如:

webdriver.Key.chord(webdriver.Key.CONTROL, 'c')

和班级ActionSequence,例如:

new webdriver.ActionSequence(driver).keyDown(webdriver.Key.CONTROL)
      .sendKeys('с')
      .keyUp(webdriver.Key.CONTROL);
action.perform();

哪种方式更好用,为什么?

1 个答案:

答案 0 :(得分:1)

首先,webdriver.Key.chord不发送任何事件,只是appends the arguments并在结尾添加NULL。根据代码:

  

注意:当低级webdriver密钥处理程序看到Keys.NULL时,处于活动状态   修饰键(CTRL / ALT / SHIFT / etc)通过键盘事件释放。

因此,假设您将结果字符串传递给elem.sendKeys(),您最终会得到:

 sendKeys: Ctrl-c
 keyUp: Ctrl

相比之下,使用示例中的Actions API,您将得到:

 explicit keyDown: Ctrl // *Not* released
 sendKeys: c
 explicit keyUp: Ctrl  // Note original edit had 'keyDown'

哪个应该给完全相同的结果。

我确信webdriver.Key.chord是表达修改键使用的更自然的方式,没有人需要考虑关键的降低或降低,并且易用性是至关重要的。即使“表现”略有不同,差异也不值得考虑。