2012-02-14 43 views
3

一些奇怪的是發生在本頁面:硒:: webdriver的::錯誤:: MoveTargetOutOfBoundsError:元素不能被滾動到視圖:對象HTMLSpanElement]

require "watir-webdriver" 
b = Watir::Browser.new 
b.goto "http://mideastunes.com/" 
b.div(class: "feat-container").element(css: "a span").present? 
=> true 
b.div(class: "feat-container").element(css: "a span").click 

Selenium::WebDriver::Error::MoveTargetOutOfBoundsError: Element cannot be scrolled into view:[object HTMLSpanElement] 
    from /Users/zeljko/.rvm/gems/[email protected]/gems/selenium-webdriver-2.19.0/lib/selenium/webdriver/remote/response.rb:52:in `assert_ok' 
    from /Users/zeljko/.rvm/gems/[email protected]/gems/selenium-webdriver-2.19.0/lib/selenium/webdriver/remote/response.rb:15:in `initialize' 
    from /Users/zeljko/.rvm/gems/[email protected]/gems/selenium-webdriver-2.19.0/lib/selenium/webdriver/remote/http/common.rb:59:in `new' 
    from /Users/zeljko/.rvm/gems/[email protected]/gems/selenium-webdriver-2.19.0/lib/selenium/webdriver/remote/http/common.rb:59:in `create_response' 
    from /Users/zeljko/.rvm/gems/[email protected]/gems/selenium-webdriver-2.19.0/lib/selenium/webdriver/remote/http/default.rb:64:in `request' 
    from /Users/zeljko/.rvm/gems/[email protected]/gems/selenium-webdriver-2.19.0/lib/selenium/webdriver/remote/http/common.rb:40:in `call' 
    from /Users/zeljko/.rvm/gems/[email protected]/gems/selenium-webdriver-2.19.0/lib/selenium/webdriver/remote/bridge.rb:590:in `raw_execute' 
    from /Users/zeljko/.rvm/gems/[email protected]/gems/selenium-webdriver-2.19.0/lib/selenium/webdriver/remote/bridge.rb:568:in `execute' 
    from /Users/zeljko/.rvm/gems/[email protected]/gems/selenium-webdriver-2.19.0/lib/selenium/webdriver/remote/bridge.rb:350:in `clickElement' 
    from /Users/zeljko/.rvm/gems/[email protected]/gems/selenium-webdriver-2.19.0/lib/selenium/webdriver/common/element.rb:34:in `click' 
    from /Users/zeljko/.rvm/gems/[email protected]/gems/watir-webdriver-0.5.3/lib/watir-webdriver/elements/element.rb:107:in `click' 
    from (irb):48 
    from /Users/zeljko/.rvm/rubies/ruby-1.9.2-p290/bin/irb:16:in `<main>' 

我試圖單擊此跨度:

<span class="feature-prev-icon icon"></span> 

我可以用這個點擊:

b.span(class: "feature-prev-icon icon").click 

,但我想這個點擊:

b.div(class: "feat-container").element(css: "a span").click 

環境:Mac OS X的10.7.3,火狐10.0.1,紅寶石1.9.2p290,硒webdriver的2.19.0,的Watir-的webdriver 0.5.3

+0

我剛剛得到了同樣的結果在FF10在Windows Vista上家庭高級版。這是一個我非常虛弱的領域,但我會嘗試進一步瞭解它。 – 2012-02-14 04:46:02

+0

問題在Gentoo Linux,Firefox 10.0,ruby 1.9.2p290,selenium-webdriver 2.19.0,watir-webdriver 0.5.3 中是可重現的但是,只要普通的硒相同的錯誤發生,它不是watir-webdriver問題。 webdriver的 'b.find_element。(:CSS => 「div.feat容器」)find_element。(:CSS => 「跨度」)click' – p0deje 2012-02-14 12:56:22

+0

礦山運行,但它點擊播放按鈕,而不是地方。 watir-webdriver 0.3.9,Windows 7中的selenium-webdriver 2.12.1,Firefox 8.所以我有點落後。 – anonygoose 2012-02-14 14:06:19

回答

5

編輯:這是不是錯誤。

正如其他答覆者所指出的那樣,您正在與之交互的元素不在屏幕中,而且除了通過複雜的交互之外,無法滾動到屏幕。

這可能你想要做什麼:

b.div(類: 「壯舉容器」)。元素(CSS: 「跨度」)[2]。點擊

你可能想什麼在這種情況下做的不是檢查:

b.div(class:「feat-container」)。element(css:「a span」)。present?

循環遍歷每個孩子,檢查其邊界框是否在屏幕上,具體來說,在這種情況下,左邊的座標是非負的。

這是WebDriver有點不直觀 - 不幸的是,沒有真正的好方法來處理潛在的問題。

+0

謝謝,我發現這個錯誤,我已經跟着它,但我不確定它是否連接。我忘了將它包含在問題中。 – 2012-02-14 16:42:28

+0

不太確定這個bug是否發生在這裏。從我看到的情況來看,返回的元素真的不在watir-webdriver可以與之交互的頁面區域之外。 – anonygoose 2012-02-15 01:16:04

0

我認爲你的問題源於你想要點擊的東西。

puts b.div(class: "feat-container").element(css: "a span").attribute_value("class") 

回報

play-icon play

這是對已經使用定位 '隱藏' 了左邊並留下了幻燈片播放按鈕:-ahugevalue

的Watir,是的webdriver這裏沒有錯誤,它只是告訴你它不能點擊它,因爲它沒有水平滾動條,因爲它不能向左滾動。

編輯:順便說一下,用於測試的系統與上面評論的系統大不相同。我不會像在工作中一樣生活在家裏,因爲害怕打破所有的一切。一切都是最新的。 Firefox 10.0.1,Ruby 1.9.2,Watir-webdriver 0.5.3,Windows 7上的Selenium-webdriver 2.19.0。

0

我也有這個問題。 還有一個ticket

這個問題可能是由一個奇怪的不可滾動佈局造成的,所以只能在窗口較大時才能觸及該按鈕。

因此調整窗口大小,可以解決它。

在java中它是:

driver.manage().window().setPosition(new Point(0, 0)); 
driver.manage().window().setSize(new Dimension(1100, 800)); 
0

您還可以使用帶來的元素到視圖(和最大化頁):

page.driver.browser.manage.window.maximize