Selenium::WebDriver::Error::MoveTargetOutOfBoundsError:元素无法滚动到视图中:[object HTMLSpanElement] [英] Selenium::WebDriver::Error::MoveTargetOutOfBoundsError: Element cannot be scrolled into view:[object HTMLSpanElement]

查看:38
本文介绍了Selenium::WebDriver::Error::MoveTargetOutOfBoundsError:元素无法滚动到视图中:[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屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆