javascript - Key.chord 还是 ActionSequence?

标签 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();

哪种方式更好,为什么?

最佳答案

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

Note: when the low-level webdriver key handlers see Keys.NULL, active modifier keys (CTRL/ALT/SHIFT/etc) release via a keyup event.

因此,假设您将结果字符串传递给 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 是表达修饰键使用的更自然的方式,无需任何人考虑按下或按下按键,并且易用性至关重要。即使“性能”略有不同,这种差异也不值得考虑。

关于javascript - Key.chord 还是 ActionSequence?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35438500/

相关文章:

javascript - 为什么在使用 val() 更新输入值时 jquery 方法 html() 仍然有旧内容

javascript - JSON.parse(null) 和 JSON.parse(false) 不应该抛出异常吗?

javascript - 如何根据来自 REST 调用的响应形成 json 数组?

java - 尝试从谷歌搜索编辑框获取并打印数据,但出现 InvalidElementStateException

java - 无法使用 Selenium Webdriver 和 Java 在 Quora 中注册新帐户

javascript - 合并这两个 if...else 语句

javascript - 使用 appCodeName 检测浏览器并加载一些 css

python - 如何将FirefoxWebElememt转换为字符串类型?

java - 在 selenium webdriver 中生成报告

selenium-webdriver - 如何告诉谷歌分析我是机器人?