使用Actions.sendKeys()或WebElement.sendKeys()来模拟用Selenium WebDriver输入的用户是否更好?

时间:2015-09-22 11:26:17

标签: selenium selenium-webdriver browser-automation

据我所知,Selenium有两种打字方式:

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

Actions方法似乎是复制用户输入的最自然的方式,因为密钥是在浏览器需要的任何地方发送的(我相信在封面下使用了一个名为sendKeysToActiveElement的方法)。但是,许多教程指示测试人员使用WebElement方法(这实际上是使用SafariDriver时的唯一选择),我认为它更简单。

Actions方法实际上是用户互动的更好模拟,还是应该使用WebElement方法?

3 个答案:

答案 0 :(得分:4)

public Actions sendKeys(java.lang.CharSequence ... keys)

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

  1. 此调用中包含的修饰键不会被释放。
  2. 没有尝试重新聚焦元素 - 因此,切换元素的sendKeys(Keys.TAB)应该可以正常工作。
  3. 了解更多信息,请参阅此链接:https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/interactions/Actions.html#sendKeys-java.lang.CharSequence...-

答案 1 :(得分:2)

这不会直接回答问题,但我原本认为在SendKeys类中使用WebElement本来会更好,因为你已经在内存中有WebElement个对象,为什么你需要创建一个Actions对象吗?

我一直使用WebElement.SendKeys()方法,但我没有找到任何用途切换到使用Actions类来发送常规字符串。

当我需要更复杂的方案时,我会使用Actions类,例如需要按住按钮或拖动某些东西。

答案 2 :(得分:1)

两件事:

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