【问题标题】:How to set value of text field all at once with a webdriver?如何使用 webdriver 一次性设置文本字段的值?
【发布时间】:2014-11-07 19:05:12
【问题描述】:

我正在使用 Cucumber、watir-webdriver、page-object 和 jruby。我正在页面类中编写一个将值输入文本区域的方法。我在page-object gem 中使用了一个生成的方法,它在后台调用了Watir-Webdriver set 方法,该方法又在元素上调用send_keys

无论如何,对我来说问题是我正在尝试添加一个非常大的字符串(为了测试可验证表单对象的最大大小的东西)。它有 4000 个字符,并且需要很长时间才能输入。

如果有一种方法可以一次将整个字符串粘贴到文本区域中,那就太好了。 有什么方法可以用我手头的技术做到这一点?这些是.. JRuby、watir-webdriver、页面对象(实际上只是委托给 watir-webdriver)。我想在任何情况下都是 selenium-webdriver 在进行浏览器驱动程序交互。

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

【问题讨论】:

    标签: selenium cucumber watir-webdriver sendkeys


    【解决方案1】:

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

    给定一个带有文本区域的页面:

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

    使用set 输入文本区域需要 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) 
    

    【讨论】:

    • 谢谢。这不是一个完美的选择,但绝对是一个选择。不知道为什么我没有想到它 - 已经在测试套件中将 execute_script 用于其他东西。好建议。
    猜你喜欢
    • 2016-05-11
    • 2020-06-03
    • 2021-07-23
    • 2015-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多