在WebDriver中使用sendKeys时处理Javascript焦点

时间:2012-03-24 16:13:29

标签: javascript selenium webdriver onload

Web应用程序使用Javascript聚焦到文本字段onload是很常见的。例如,在登录页面中,我们可以使用Javascript来关注用户名字段。

将WebDriver与FirefoxDriver一起使用时,我使用sendKeys来填充这些字段。但是,大多数情况下,Javascript焦点功能将执行 WebDriver正在发送实际字符,因此我对另一个字段(例如密码字段)的输入是部分的,其余字段将转到焦点字段

我该如何处理这个案子?据我所知,阻塞API在加载页面内容时返回,而不是在Javascript执行完成时返回,因此这种情况是可以理解的。但是,我不认为使用“等待”是一个不错的解决方案,因为它意味着对测试开发的过多干扰。

1 个答案:

答案 0 :(得分:0)

我提出了三种可能的解决方案,但实际上并没有保证能够正常工作:

  1. javascript的document.readyState会返回"complete"吗?如果没有,您可以在每click()之后等待。{/ li>
  2. 您可以等到driver.switchTo().activeElement();(返回活动元素)返回您的文本字段,然后开始输入。我想你之后也应该打电话给driver.switchTo().defaultContent();,但我不确定。类似的方法是获得document.activeElement
  3. 嗯,这也有些笨拙。编写自己的sendKeys方法,找到元素,记住元素,然后一次从所需字符串中发送一个键。因为WebDriver确保关注打字的开头,所以它应该有效。