watir-webdriver设置值到text_field非常慢

时间:2015-06-11 15:16:16

标签: ruby watir-webdriver

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

我在Windows上使用Clipboard gem和send_keys [:control," v"]找到了解决方法,但这对于无头linux来说并不适用。有什么建议吗?

1 个答案:

答案 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)