2011-12-02 38 views
3

我發現watir-webdriver在非常大的頁面上通過regexp定位元素非常緩慢,這在FF 8.0.1中對我來說至少是正確的。飛行搜索結果頁上實施例(含有約50個搜索結果,它們中的每是HTML結構的良好部分):watir-webdriver在很長的頁面上使用正則表達式定位元素非常緩慢

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和2.0.4的Watir在IE8。

爲了比較,下面是一些IE8次使用針對IE8的Watir-的webdriver和FF3.6

的Watir-的webdriver:

  1. => 0.172017
  2. & 3. =>超時: :錯誤:/ruby/1.8.7-p334/lib/ruby/1.8/timeout.rb:64:執行由C過期在`rbuf_fill」

的Watir-的webdriver與FF3.6:

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

進入被測頁面的步驟 - www.expedia.co.uk/Flights,執行往返搜索航班並切換到結果頁面上的返回航班選項卡。

有沒有任何線索爲什麼會發生這種情況?

+0

你在玩幾個變量,無論是瀏覽器,您使用的驅動程序..可能我建議用watir-webdriver與IE8(也可能是Chrome)一起嘗試它,以便我們可以看到這是否同樣緩慢呢?如果在任何一個瀏覽器下watir-webdriver都不好,vs如果它只是firefox,可以告訴我們更多關於問題可能出在哪裏。可能也想嘗試firefox 3.6,因爲大量的FF用戶都抱着該版本,而不是由於插件兼容性問題而升級。 –

+0

嗨Chuck。在IE8上watir-webdriver: 1 => 0.172017, 2&3 =>超時::錯誤:執行過期 來自C:/ruby/1.8.7-p334/lib/ruby/1.8/timeout.rb:64 :在'rbuf_fill' ... 的Watir-的webdriver與FF3.6: 1 => 0.055005, 2 => 80.095009, 3 => 101.734173。 Page - 從http://www.expedia.co.uk/Flights進行往返搜索並切換到返回航班選項卡。 Timeout :: Error - 將引發一個單獨的問題。昨天通過的測試開始失敗,今天超時(沒有更新寶石) - FF8.0.1。但顯然在IE8中最後2次操作花費了1分多鐘才排除異常。 –

+0

好的,我編輯了問題來插入數據。有趣的是,在IE瀏覽器中,它會在一兩分鐘後超時,但是你對FF8的說法卻是超過30分鐘。我對webdriver內部的專家還不夠,但希望這會讓更多人能夠與之合作。 –

回答

0

當查詢變得壓迫時,我們所做的一件事是完全脫離硒/ watir循環,並要求瀏覽器執行一些JavaScript來抓取我們想要的元素。顯然,這有一些限制,特別是如果你需要在你回來的對象上使用watir(你不能)。但是,如果你正在尋找特別的東西,你不能更快。我假設你正在使用jQuery,但實際上JavaScript可以是任意的,無論你需要什麼。

,我認爲這會工作...(但不告我,如果我有一個錯誤; P)

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

可以你澄清你的意思是「顯然這有一些限制,尤其是如果你需要使用watir來回收(你不能)的對象」?我做了一些測試(https://jkotests.wordpress.com/2015/07/23/returning-watir-element-from-execute_script/),可以從'execute_script'返回一個Watir :: Element,並且與它進行交互。 –

+0

我站好了,非常好!謝謝! –

+0

查看Justin Ko的博客文章,主題爲https://jkotests.wordpress.com/2015/07/23/returning-watir-element-from-execute_script/ – emery