gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 05:08:31 24 4
gpt4 key购买 nike

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

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

为了比较,这里有一些针对 IE8 和 FF3.6 使用 watir-webdriver 的情况

IE8 上的 watir-webdriver:

  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'

带有 FF3.6 的 watir-webdriver:

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

进入测试页面的步骤 - www.expedia.co.uk/Flights,执行往返航类搜索并切换到结果页面上的回程航类选项卡。

有人知道为什么会这样吗?

最佳答案

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

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

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

关于webdriver - watir-webdriver 在沉重的页面上通过正则表达式定位元素非常慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8360315/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com