我在复杂的 watir 脚本中遇到了性能问题。我隔离了部分代码,结果如下:
# Load browser and test page
@browser = Watir::Browser.new :chrome
@browser.goto ("http://myurl")
# Start to inspect time of script
puts "0 - Start : " + Time.new.inspect
# Get active frame
frame = @browser.frame(:id => 'myFrame0123')
puts "1 - Frame is a variable : " + Time.new.inspect
puts frame.exists?
puts "2 - Getting frame src : " + Time.new.inspect
# play
frame.link(:class => "playButton").click # should be fast
puts "3 - Clicking link in frame : " + Time.new.inspect
puts frame.exists? # should be instant
puts "4 - Getting frame src : " + Time.new.inspect
# Closing
@browser.close
该代码打开一个测试页面,检测一个框架,然后单击框架中的一个链接。
这是 firefox 的结果:
0 - Start : 2013-10-07 15:41:40 +0200
1 - Frame is a variable : 2013-10-07 15:41:40 +0200
true
2 - Getting frame src : 2013-10-07 15:41:40 +0200
3 - Clicking link in frame : 2013-10-07 15:42:01 +0200
true
4 - Getting frame src : 2013-10-07 15:42:54 +0200
时间丢失了:
- 在 2 和 3 之间:我不明白点击框架中的链接需要 20 秒吗?
- 在 3 到 4 之间:检查框架是否存在可能需要 50 秒?
在 chrome 中,整个脚本不到 10 秒(如我所愿)
版本:ruby 1.9.3,watir-webdriver 0.6.4,firefox 21、23、24。