首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >watir-webdriver将值设置为text_field非常慢

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

Stack Overflow用户
提问于 2015-06-11 15:16:16
回答 1查看 605关注 0票数 2

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

我已经在Windows上找到了一个解决办法,使用剪贴板gem和send_keys :control,"v",但是这并不适用于无头linux。对此有什么建议吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-12 14:30:26

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

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

Watir 6.8+

Watir现在提供了一个#set!方法来完成这个任务:

代码语言:javascript
复制
long_text = "abcde fghijk lmnop qrstuv"
browser.text_field.set!(long_text)

前Watir 6.8

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

代码语言:javascript
复制
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的速度要快得多。基准:

代码语言:javascript
复制
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

结果:

代码语言:javascript
复制
                     user     system      total        real 
execute_script:  0.874000   0.609000   1.483000 (  6.690669) 
set:             2.199000   1.295000   3.494000 ( 22.384238)
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30784827

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档