我发现watir-webdriver在一个非常大的页面上通过regexp定位元素非常慢,这对我来说至少在FF 8.0.1中是正确的。航班搜索结果页面上的示例(包含大约50个搜索结果,每个搜索结果都是html结构的一个很好的部分):
1
irb(main):057:0>
t=Time.now;browser.div({:id=>”flightModule40”}).exists?;puts
”#{Time.now-t}” #=> 0.202
2
irb(main):056:0>
t=Time.now;browser.div({:id=>/flightModule40/}).exists?;puts
”#{Time.now-t}” #=> 131.046
3
irb(main):058:0>
t=Time.now;browser.div({:id=>/flightModule/, :index=>40}).exists?;puts
”#{Time.now-t}” #=>—is working for 30 minutes for me already…
所有上述工作在IE8中以可接受的速度工作,在IE8中为watir 2.0.4。
为了比较,这里有时候使用watir-webdriver对抗IE8和FF3.6
IE8上的watir-webdriver:
使用FF3.6的watir-webdriver:
到达测试页面的步骤 - www.expedia.co.uk/Flights,对航班进行往返搜索并切换到结果页面上的返回航班选项卡。
有没有任何线索为何会发生这种情况?
答案 0 :(得分:0)
我们在查询变得压抑的时候做的一件事就是完全退出selenium / watir循环并要求浏览器执行一些javascript以获取我们想要的元素。显然这有一些限制,特别是如果你需要对你得到的对象使用watir(你不能)。但如果你正在寻找特别的东西,你就不会快得多。我假设您使用的是jQuery,但实际上JavaScript可以是任意的,无论您需要什么。
我认为这会有用......(但如果我有错误,请不要起诉我; P)
browser.execute_script("jQuery(\"div[id*='flightModule40']"\")")