watir-webdriver在重页面上通过regexp定位元素非常慢

时间:2011-12-02 17:36:43

标签: webdriver watir watir-webdriver

我发现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:

  1. => 0.172017
  2. &安培; 3. =>超时::错误:执行过期从C:/ruby/1.8.7-p334/lib/ruby/1.8/timeout.rb:64:在`rbuf_fill'
  3. 使用FF3.6的watir-webdriver:

    1. => 0.055005,
    2. => 80.095009,
    3. => 101.734173。
    4. 到达测试页面的步骤 - www.expedia.co.uk/Flights,对航班进行往返搜索并切换到结果页面上的返回航班选项卡。

      有没有任何线索为何会发生这种情况?

1 个答案:

答案 0 :(得分:0)

我们在查询变得压抑的时候做的一件事就是完全退出selenium / watir循环并要求浏览器执行一些javascript以获取我们想要的元素。显然这有一些限制,特别是如果你需要对你得到的对象使用watir(你不能)。但如果你正在寻找特别的东西,你就不会快得多。我假设您使用的是jQuery,但实际上JavaScript可以是任意的,无论您需要什么。

我认为这会有用......(但如果我有错误,请不要起诉我; P)

browser.execute_script("jQuery(\"div[id*='flightModule40']"\")")