watir-webdriver 在大页面上通过正则表达式定位元素非常慢

发布于 2024-12-19 06:37:39 字数 1150 浏览 3 评论 0原文

我发现 watir-webdriver 在一个非常大的页面上通过正则表达式定位元素的速度非常慢,对于我来说至少在 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…

以上所有内容在 watir 1.6.5 和 watir 2.0.4 中都可以以可接受的速度运行在IE8中。

为了进行比较,这里有一些在 IE8 上使用 watir-webdriver 和

在 IE8 上使用 FF3.6 watir-webdriver 的情况:

  1. => 0.172017
  2. & 3.=>超时::错误:执行从 C:/ruby/1.8.7-p334/lib/ruby/1.8/timeout.rb:64: 在

FF3.6 的 `rbuf_fill' watir-webdriver 中过期:

  1. => 0.055005,
  2. => 80.095009,
  3. => 101.734173。

访问测试页面的步骤 - www.expedia.co.uk/Flights,对航班进行往返搜索,然后切换到结果页面上的“返程航班”选项卡。

有谁知道为什么会发生这种情况吗?

I found watir-webdriver to be extremely slow locating an element by regexp on a very big page, this is at least true in FF 8.0.1 for me. Example on a flight search results page (containing about 50 search results, each of them is a good portion of html structure):

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…

All of the above works with acceptable speed in watir 1.6.5 and watir 2.0.4 in IE8.

For comparison, here are some times using watir-webdriver against IE8 and FF3.6

watir-webdriver on IE8:

  1. => 0.172017
  2. & 3. => Timeout::Error: execution expired from C:/ruby/1.8.7-p334/lib/ruby/1.8/timeout.rb:64:in `rbuf_fill'

watir-webdriver with FF3.6:

  1. => 0.055005,
  2. => 80.095009,
  3. => 101.734173.

Steps to get to the page under test - www.expedia.co.uk/Flights, do a roundtrip search for flights and switch to Return Flights tab on the results page.

Does any have any clue why this is happening?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

爱你是孤单的心事 2024-12-26 06:37:39

当查询变得令人难以忍受时,我们有时会做的一件事是完全摆脱 selenium/watir 循环,并要求浏览器执行一些 JavaScript 来获取我们想要的元素。显然这有一些限制,特别是如果您需要在返回的对象上使用 watir (您不能)。但如果你正在寻找特别的东西,你就不可能更快了。我假设您正在使用 jQuery,但实际上 JavaScript 可以是任意的,无论您需要什么。

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

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

One thing we have done at times when a query becomes oppressive is to get out of the selenium/watir loop altogether and ask the browser to execute some javascript to grab the elements we want. Obviously this has some limitations especially if you need to use watir on the object you get back (you can't). But if you are looking for something in particular, you can't get much faster. I am assuming you are using jQuery, but in reality the JavaScript can be arbitrary and whatever you need.

I think this would work...(but don't sue me if I have an error ;P )

browser.execute_script("jQuery(\"div[id*='flightModule40']"\")")
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文