/ / watir-webdriver je veľmi pomalé lokalizovanie prvku regexp na ťažkej stránke - webdriver, watir, watir-webdriver

watir-webdriver je veľmi pomalé lokalizovanie elementu regexp na ťažkej stránke - webdriver, watir, watir-webdriver

Našiel som watir-webdriver byť extrémne pomalýumiestnenie prvku regexp na veľmi veľkej stránke, to je aspoň pravda v FF 8.0.1 pre mňa. Príklad na stránke s výsledkami vyhľadávania letov (obsahuje približne 50 výsledkov vyhľadávania, pričom každá z nich je dobrou časťou štruktúry 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…

Všetky tieto práce pracujú s prijateľnou rýchlosťou vo watri 1.6.5 a watir 2.0.4 v IE8.

Pre porovnanie, tu sú niektoré časy pomocou watir-webdriver proti IE8 a FF3.6

watir-webdriver na IE8:

  1. => 0.172017
  2. & 3. => Timeout :: Chyba: exspirácia vypršala z C: /ruby/1.8.7-p334/lib/ruby/1.8/timeout.rb: 64: v `rbuf_fill '

watir-webdriver s FF3.6:

  1. => 0.055005,
  2. => 80.095009,
  3. => 101,734173.

Kroky, ako sa dostať na testovanú stránku - www.expedia.co.uk/Flight, vyhľadajte lety na spiatočnej ceste a na stránke s výsledkami prepnite na kartu Spiatočné lety.

Má niekto nejaké ponaučenie, prečo sa to deje?

odpovede:

0 pre odpoveď č. 1

Jedna vec, ktorú sme urobili v čase, keď dotazsa stáva represívne je dostať von zo selén / watir slučky úplne a požiadať prehliadača, aby vykonal nejaký javascript chytiť prvky, ktoré chceme. Je zrejmé, že to má určité obmedzenia, najmä ak potrebujete použiť watir na objekt, ktorý sa dostanete späť (môžete "t). Ale ak hľadáte niečo konkrétne, môžete" t dostať oveľa rýchlejšie. Som za predpokladu, že používate jQuery, ale v skutočnosti JavaScript môže byť ľubovoľný a čo potrebujete.

Myslím, že by to fungovalo ... (ale don 't ma žalovať, keď mám chybu; P)

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