使用watir-webdriver将大文本设置为text_field大约需要4-5秒。我也尝试了价值方法,但它仍然很慢。
我在Windows上使用Clipboard gem和send_keys [:control," v"]找到了解决方法,但这对于无头linux来说并不适用。有什么建议吗?
答案 0 :(得分:3)
输入大值可能会很慢,因为一次只输入一个字符。这是为了触发每个关键事件。
假设您的应用程序不关心通过输入字段触发的事件,您可以通过JavaScript直接设置值。
Watir 6.8 +
Watir现在提供#set!
方法来执行此操作:
long_text = "abcde fghijk lmnop qrstuv"
browser.text_field.set!(long_text)
Pre-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)