2012-02-14 19 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は、Firefox 10.0.1、ルビー1.9.2p290、セレンwebdriverを2.19.0、ワチール-webdriverを0.5.3

+0

私はちょうどWindows VistaでFF10に同じ結果を得ましたホームプレミアム。これは私が非常に弱い分野ですが、私はそれについてもっと学びたいと思っています。 –

+0

問題はGentoo Linux、Firefox 10.0、ruby 1.9.2p290、selenium-webdriver 2.19.0、watir-webdriver 0.5.3 で再現可能です。ただし、プレーンなSelenium-webdriverで同じエラーが発生する限り、watir-webdriverの問題ではありません。 – p0deje

+0

クリックしてください。代わりにどこかで再生ボタンをクリックします。 watir-webdriver 0.3.9、Windows 7、Firefox 8のselenium-webdriver 2.12.1です。だから私は少し後ろです。 – anonygoose

答えて

5

編集:これではありませんバグ。

他の回答者が指摘したように、対話している要素はオフスクリーンであり、複雑なやり取り以外の画面にスクロールすることはできません。

は、これはおそらく、あなたが欲しいものを行います。

b.div(クラス: "偉業コンテナ")。要素(CSS: "スパン")[2]あなたはおそらく欲しい

を.clickこの場合は、

b.div(class: "feat-container")要素(css: "a span")の存在を確認するのではなく、

それぞれの子をループして、その境界ボックスが画面上にあることを確認します。具体的には、この場合、左の座標は負ではありません。

これはWebDriverにとっては直感的ではありません。残念ながら、根本的な問題を処理する方法は実際にはありません。

+0

ありがとう、私はそのバグを発見し、私はすでにそれに従っていますが、私はそれが接続されているかどうかはわかりませんでした。私はそれを質問に含めるのを忘れた。 –

+0

このバグはここでは起こっていません。私が見たことから、あなたが返す要素は、watir-webdriverがやり取りできるページ領域の外にあります。 – anonygoose

0

あなたの問題は、あなたがクリックしようとしているものに起因すると思います。ポジショニングを使用して、左にオフ '隠れた' と残されているスライド上の再生ボタンで

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

戻り

play-icon play

:-ahugevalue

ワチール-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 
関連する問題