2012-02-14 89 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 
相关问题