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

Dmi*_*kov 4 selenium sendkeys cucumber watir-webdriver

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

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

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

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

Jus*_* Ko 7

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

给出一个带有textarea的页面:

<html>
  <body>
    <textarea></textarea>
  </body>
</html>
Run Code Online (Sandbox Code Playgroud)

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

input = 'a' * 4000
browser.textarea.set(input)
Run Code Online (Sandbox Code Playgroud)

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

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