Selenium::WebDriver::Error::MoveTargetOutOfBoundsError:元素无法滚动到视图中:[object HTMLSpanElement] [英] Selenium::WebDriver::Error::MoveTargetOutOfBoundsError: Element cannot be scrolled into view:[object HTMLSpanElement]
问题描述
此页面上发生了一些奇怪的事情:
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>
我可以用这个点击它:
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
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
推荐答案
这不是错误.
正如其他回答者所指出的,您正在与之交互的元素在屏幕外,除了复杂的交互之外,无法滚动到屏幕上.
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.
这可能符合您的要求:
b.div(class: "feat-container").elements(css: "a span")[2].click
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?
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.
这对 WebDriver 来说有点不直观 - 不幸的是,没有真正好的方法来处理潜在的问题.
This is a bit unintuitive of WebDriver - unfortunately, there isn't really a good way to handle the underlying problem.
这篇关于Selenium::WebDriver::Error::MoveTargetOutOfBoundsError:元素无法滚动到视图中:[object HTMLSpanElement]的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!