使用 Actions.sendKeys() 或 WebElement.sendKeys() 来模拟用户使用 Selenium WebDriver 打字更好吗?

Is it better to use Actions.sendKeys() or WebElement.sendKeys() to simulate a user typing with Selenium WebDriver?

据我所知,有两种使用 Selenium 进行输入的方法:

new Actions(webDriver).sendKeys("text to send").perform();
webElement.sendKeys("text to send");

Actions 方法似乎是复制用户键入的最自然方式,因为密钥会发送到浏览器需要的任何位置(我相信在幕后使用了一种名为 sendKeysToActiveElement 的方法)。然而,许多教程指导测试人员使用 WebElement 方法(这实际上是使用 SafariDriver 时的唯一选项),我认为它更简单。

Actions 方法实际上是更好地模拟用户交互,还是为了方便我应该使用 WebElement 方法?

这并没有直接回答问题,但我认为在 WebElement class 中使用 SendKeys 会更好,因为你已经有了 WebElement 内存中的对象,为什么需要创建一个Actions对象?

我一直使用 WebElement.SendKeys() 方法,我还没有发现任何用途可以切换到使用 Actions class 来发送常规字符串。

当我需要更复杂的场景时,我会使用 Actions class需要按住一个按钮或拖动一些东西。

public 操作发送键(java.lang.CharSequence...键)

将键发送到活动元素。这与在活动元素上以两种方式调用 WebElement.sendKeys(CharSequence...) 不同:

  1. 本次调用包含的修饰键未释放。
  2. 没有尝试 re-focus 元素 - 所以用于切换元素的 sendKeys(Keys.TAB) 应该可以工作。

更多你可以参考这个 link : https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/interactions/Actions.html#sendKeys-java.lang.CharSequence...-

两件事:

  1. 如果你想准确地重新创建用户的交互,最好使用 Actions,否则最好使用 webElement.sendkeys(),因为它更实用和简单。
  2. 如果您需要执行拖放等复杂操作,最好使用 Actions。