Selenium::WebDriver::Error::MoveTargetOutOfBoundsError:元素无法滚动到视图中:[object 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/ruby-1.9.2-p290@gretel/gems/selenium-webdriver-2.19.0/lib/selenium/webdriver/remote/response.rb:52:in `assert_ok'
from /Users/zeljko/.rvm/gems/ruby-1.9.2-p290@gretel/gems/selenium-webdriver-2.19.0/lib/selenium/webdriver/remote/response.rb:15:in `initialize'
from /Users/zeljko/.rvm/gems/ruby-1.9.2-p290@gretel/gems/selenium-webdriver-2.19.0/lib/selenium/webdriver/remote/http/common.rb:59:in `new'
from /Users/zeljko/.rvm/gems/ruby-1.9.2-p290@gretel/gems/selenium-webdriver-2.19.0/lib/selenium/webdriver/remote/http/common.rb:59:in `create_response'
from /Users/zeljko/.rvm/gems/ruby-1.9.2-p290@gretel/gems/selenium-webdriver-2.19.0/lib/selenium/webdriver/remote/http/default.rb:64:in `request'
from /Users/zeljko/.rvm/gems/ruby-1.9.2-p290@gretel/gems/selenium-webdriver-2.19.0/lib/selenium/webdriver/remote/http/common.rb:40:in `call'
from /Users/zeljko/.rvm/gems/ruby-1.9.2-p290@gretel/gems/selenium-webdriver-2.19.0/lib/selenium/webdriver/remote/bridge.rb:590:in `raw_execute'
from /Users/zeljko/.rvm/gems/ruby-1.9.2-p290@gretel/gems/selenium-webdriver-2.19.0/lib/selenium/webdriver/remote/bridge.rb:568:in `execute'
from /Users/zeljko/.rvm/gems/ruby-1.9.2-p290@gretel/gems/selenium-webdriver-2.19.0/lib/selenium/webdriver/remote/bridge.rb:350:in `clickElement'
from /Users/zeljko/.rvm/gems/ruby-1.9.2-p290@gretel/gems/selenium-webdriver-2.19.0/lib/selenium/webdriver/common/element.rb:34:in `click'
from /Users/zeljko/.rvm/gems/ruby-1.9.2-p290@gretel/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,ruby 1.9。 2p290、selenium-webdriver 2.19.0、watir-webdriver 0.5.3
Something strange is happening on this page:
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/ruby-1.9.2-p290@gretel/gems/selenium-webdriver-2.19.0/lib/selenium/webdriver/remote/response.rb:52:in `assert_ok'
from /Users/zeljko/.rvm/gems/ruby-1.9.2-p290@gretel/gems/selenium-webdriver-2.19.0/lib/selenium/webdriver/remote/response.rb:15:in `initialize'
from /Users/zeljko/.rvm/gems/ruby-1.9.2-p290@gretel/gems/selenium-webdriver-2.19.0/lib/selenium/webdriver/remote/http/common.rb:59:in `new'
from /Users/zeljko/.rvm/gems/ruby-1.9.2-p290@gretel/gems/selenium-webdriver-2.19.0/lib/selenium/webdriver/remote/http/common.rb:59:in `create_response'
from /Users/zeljko/.rvm/gems/ruby-1.9.2-p290@gretel/gems/selenium-webdriver-2.19.0/lib/selenium/webdriver/remote/http/default.rb:64:in `request'
from /Users/zeljko/.rvm/gems/ruby-1.9.2-p290@gretel/gems/selenium-webdriver-2.19.0/lib/selenium/webdriver/remote/http/common.rb:40:in `call'
from /Users/zeljko/.rvm/gems/ruby-1.9.2-p290@gretel/gems/selenium-webdriver-2.19.0/lib/selenium/webdriver/remote/bridge.rb:590:in `raw_execute'
from /Users/zeljko/.rvm/gems/ruby-1.9.2-p290@gretel/gems/selenium-webdriver-2.19.0/lib/selenium/webdriver/remote/bridge.rb:568:in `execute'
from /Users/zeljko/.rvm/gems/ruby-1.9.2-p290@gretel/gems/selenium-webdriver-2.19.0/lib/selenium/webdriver/remote/bridge.rb:350:in `clickElement'
from /Users/zeljko/.rvm/gems/ruby-1.9.2-p290@gretel/gems/selenium-webdriver-2.19.0/lib/selenium/webdriver/common/element.rb:34:in `click'
from /Users/zeljko/.rvm/gems/ruby-1.9.2-p290@gretel/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>'
I am trying to click this span:
<span class="feature-prev-icon icon"></span>
I can click it with this:
b.span(class: "feature-prev-icon icon").click
but I would like to click it with this:
b.div(class: "feat-container").element(css: "a span").click
Environment: Mac OS X 10.7.3, Firefox 10.0.1, ruby 1.9.2p290, selenium-webdriver 2.19.0, watir-webdriver 0.5.3
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
编辑:这不是一个错误。
正如其他回答者所指出的,您正在交互的元素位于屏幕外,除了通过复杂的交互之外,无法滚动到屏幕上。
这可能会满足您的要求:
b.div(class: "feat-container").elements(css: "a span")[2].click
在这种情况下您可能想要做的不是检查
: div(class: "feat-container").element(css: "a span").present?
循环遍历每个子项,检查其边界框是否在屏幕上,特别是在这种情况下,左坐标为非负数。
这对 WebDriver 来说有点不直观 - 不幸的是,并没有真正好的方法来处理根本问题。
Edit: This isn't a bug.
As other answerers have indicated, the element you're interacting with is off-screen and can't be scrolled in to screen other than by complex interaction.
This probably does what you want:
b.div(class: "feat-container").elements(css: "a span")[2].click
What you probably want to do in this case is rather than checking:
b.div(class: "feat-container").element(css: "a span").present?
Looping over each child, checking that its bounding box is on screen, specifically in this case that the left coordinate is non-negative.
This is a bit unintuitive of WebDriver - unfortunately, there isn't really a good way to handle the underlying problem.
我认为你的问题源于你试图点击的内容。
返回
play-icon play
这是幻灯片上的播放按钮,该按钮已使用定位和 left:-ahugevalue Watir-webdriver 被“隐藏”在左侧
,这里没有错误,它只是告诉您它无法单击它,因为它无法滚动到最左边,因为没有水平滚动条。
编辑:顺便说一句,用于测试这一点的系统与上面评论的系统有很大不同。我不像在工作时那样生活在担心破坏家里所有东西的恐惧中。一切都是最新的。 Windows 7 上的 Firefox 10.0.1、Ruby 1.9.2、Watir-webdriver 0.5.3、Selenium-webdriver 2.19.0。
I think your problem stems from what you're trying to click.
returns
play-icon play
Which is the play button on a slide that has been 'hidden' off to the left using positioning and left:-ahugevalue
Watir-webdriver is not being buggy here, it's just telling you it can't click it as it can't scroll that far left as there's no horizontal scrollbar.
edit: by the way the system used to test this differs greatly to the one commented above. I don't live in fear of breaking everything at home like I do at work. Everything is up to date. Firefox 10.0.1, Ruby 1.9.2, Watir-webdriver 0.5.3, Selenium-webdriver 2.19.0 on Windows 7.
我也有这个问题。
还有一张票据。
该问题可能是由奇怪的不可滚动布局引起的,因此只有在窗口更大时才能到达该按钮。
所以调整窗口大小就可以解决这个问题。
在java中是:
I had this issue too.
There is also a ticket.
The problem could be caused by a weird unscrollable layout, so the button could only be reached if the window was bigger.
So resizing the window, could fix it.
in java it was:
您还可以使用将元素带入视图(并最大化页面):
You can also use to bring the element into view (and maximize the page):