如何使用webdriver一次性设置文本字段的值?

时间:2014-11-07 19:05:12

标签: selenium cucumber watir-webdriver sendkeys

我使用的是Cucumber,watir-webdriver,page-object和jruby。我正在页面类中编写一个方法,将值输入文本区域。我在page-object gem中使用生成的方法,在引擎盖下调用Watir-Webdriver set方法,然后在元素上调用send_keys

无论如何,对我来说问题是我试图添加一个非常大的STRING(为了测试可验证表单对象的最大大小的东西)。这是4000个字符,需要花费相当多的时间才能进入。

如果有一种方法可以将整个字符串一次粘贴到文本区域,那就太棒了。 有没有办法使用我手边的技术?这些是.. JRuby,watir-webdriver,page-object(它真的只委托给watir-webdriver)。我认为它是selenium-webdriver,它在任何情况下都在进行浏览器驱动程序交互。

到目前为止,我还没有找到最终使用send_keys的方法,它基本上一次发送一个键击,这就是为什么一个巨大的字符串是一个痛苦。

1 个答案:

答案 0 :(得分:7)

您可以使用execute_script直接设置字段的值。

给定带有textarea的页面:

<html>
  <body>
    <textarea></textarea>
  </body>
</html>

使用set输入textarea需要6-9秒(使用Firefox / Chrome):

input = 'a' * 4000
browser.textarea.set(input)

但是,通过使用execute_script直接设置值,只需0.2秒:

input = 'a' * 4000
field = browser.textarea
browser.execute_script('arguments[0].value = arguments[1];', field, input)