2014-11-20 15 views
0

我想要做的是單擊圖像滑塊上的「下一步」按鈕,並驗證它是否會將我帶到下一張圖像。Watir-WebDriver如何找到通過JS更新的類?

分頁點有類「btn點圖標」。有一個EventListener,它爲當前選定的幻燈片的點「btn點圖標選擇」。我可以在IRB驗證這一點:

irb(main):091:0> @b.span(:class, 'btn dot icon selected').text 
=> "Page 0" 
irb(main):092:0> @b.span(:text => 'Next', :index => 1).click 
=> [] 
irb(main):093:0> @b.span(:class, 'btn dot icon selected').text 
=> "Page 1" 

然而,通過的Watir-webdriver的運行相同則返回「頁0」整個「下一步」的任何點擊。添加一個隱含的等待並沒有什麼不同。

這裏有什麼問題?

注意:'Next'按鈕匹配器會查找第二個匹配項(:index => 1),因爲我感興趣的滑塊上方有另一個滑塊,但是此滑塊沒有分頁點(通過@b.spans(:class => 'btn dot icon').size)。

紅寶石1.9.3p545,的Watir-webdriver的0.6.11,硒webdriver的2.44.0,火狐33.1

+0

當它在irb中運行但不是腳本時,這通常意味着它是一個計時問題。你是如何做等待的? – 2014-11-21 14:42:43

+0

'@b.driver.manage.timeouts.implicit_wait = 30'這是在點擊Next之後放置的。然後測試運行時間大約需要30秒,但仍然會導致出現'Selenium :: WebDriver :: Error :: ElementNotVisibleError'。好的,拿着電話,我在進一步調查後才發現這個問題。最終我注意到,雖然點擊事件沒有錯誤,但沒有任何效果。我查了一下如何執行點擊作爲一個JavaScript事件,而實際上它工作。感謝幫助! – 2014-11-21 16:01:24

回答

0

竟然是比我期待一個簡單的解決方案。通過改變

@b.span(:text => 'Next', :index => 1).click 

解決它

@b.span(:text => 'Next', :index => 1).fire_event("onclick") 

的Watir-webdriver的正在執行的跨度點擊成功,但它看起來像它不能開槍,涵蓋了JavaScript的單擊事件。手動使它觸發JavaScript事件。