使用watir-webdriver将大文本设置为text_field需要大约4-5秒的时间。我也尝试过价值方法,但它还是很慢。
我已经在Windows上找到了一个解决办法,使用剪贴板gem和send_keys :control,"v",但是这并不适用于无头linux。对此有什么建议吗?
发布于 2015-06-12 14:30:26
输入大值可能很慢,因为字符一次只输入一个。这将触发每个关键事件。
假设应用程序不关心输入字段所触发的事件,则可以通过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)https://stackoverflow.com/questions/30784827
复制相似问题