gpt4 book ai didi

ruby - watir-webdriver 将值设置为 text_field 非常慢

转载 作者:数据小太阳 更新时间:2023-10-29 08:45:09 24 4
gpt4 key购买 nike

使用 watir-webdriver 将大文本设置为 text_field 大约需要 4-5 秒。我也尝试过值方法,但它仍然很慢。

我在 Windows 上使用剪贴板 gem 和 send_keys [:control, "v"] 找到了解决此问题的方法,但这在 headless linux 上并不适用。对此有何建议?

最佳答案

输入大值可能会很慢,因为一次输入一个字符。这是为了触发每个关键事件。

假设您的应用程序不关心输入字段触发的事件,您可以直接通过 JavaScript 设置值。

Watir 6.8+

Watir 现在提供了一个 #set! 方法来做到这一点:

long_text = "abcde fghijk lmnop qrstuv"
browser.text_field.set!(long_text)

Watir 6.8 之前

在 v6.8 之前(最初回答这个问题时),这需要通过 #execute_script 手动完成:

long_text = "abcde fghijk lmnop qrstuv"
the_field = browser.text_field
p the_field.value
#=> ""
browser.execute_script("arguments[0].value = '#{long_text}';", the_field)
p the_field.value
#=> "abcde fghijk lmnop qrstuv"

性能比较

即使是这么小的文本,您也可以看出 execute_script 的速度要快得多。基准:

n = 100
Benchmark.bm do |x|
x.report("execute_script:") { n.times { browser.execute_script("arguments[0].value = '#{long_text}';", the_field) } }
x.report("set:") { n.times { the_field.set(long_text) } }
end

结果:

                     user     system      total        real 
execute_script: 0.874000 0.609000 1.483000 ( 6.690669)
set: 2.199000 1.295000 3.494000 ( 22.384238)

关于ruby - watir-webdriver 将值设置为 text_field 非常慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30784827/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com