Žel*_*pin 3 watir watir-webdriver
这个页面上发生了一些奇怪的事情:
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>'
Run Code Online (Sandbox Code Playgroud)
我想点击这个范围:
<span class="feature-prev-icon icon"></span>
Run Code Online (Sandbox Code Playgroud)
我可以点击它:
b.span(class: "feature-prev-icon icon").click
Run Code Online (Sandbox Code Playgroud)
但是我想点击它:
b.div(class: "feat-container").element(css: "a span").click
Run Code Online (Sandbox Code Playgroud)
环境:Mac OS X 10.7.3,Firefox 10.0.1,ruby 1.9.2p290,selenium-webdriver 2.19.0,watir-webdriver 0.5.3
编辑:这不是一个错误.
正如其他回答者所指出的那样,您正在与之交互的元素是屏幕外的,除了通过复杂的交互之外,无法滚动到屏幕.
这可能会做你想要的:
b.div(class:"feat-container").elements(css:"a span")[2] .click
在这种情况下你可能想做的不是检查:
b.div(class:"feat-container").element(css:"a span").present?
循环遍历每个孩子,检查其边界框是否在屏幕上,特别是在这种情况下左边坐标是非负的.
这有点不直观的WebDriver - 遗憾的是,没有一个很好的方法来处理潜在的问题.
| 归档时间: |
|
| 查看次数: |
10864 次 |
| 最近记录: |