使用 Ruby 和 Watir 和 Webdriver 强制浏览器加载

Force browser to load using Ruby with Watir and Webdriver

当我运行下面的代码时,我得到一个等待元素的超时:

require 'watir'
require 'webdrivers'

browser = Watir::Browser.new
browser.goto "http://watir.com/examples/forms_with_input_elements.html"
browser.text_field(:id, "new_user_username").set("test")

/home/.gem/ruby/2.4.1/gems/watir-6.9.1/lib/watir/elements/element.rb:618:in `raise_disabled': element present and enabled, but timed out after 30 seconds, waiting for # < Watir::TextField: located: true; {:id=>"new_user_username", :tag_name=>"input"}> to not be disabled (Watir::Exception::ObjectDisabledException)

chrome window 启动但似乎没有加载。我可以在它启动后通过调整 window 的大小来强制加载它,并且一切正常,但我不必采取任何手动步骤。是否有自动强制浏览器加载的方法?

啊,这是一个交互错误。这些不容易提前弄清楚。出于某种原因,chromedriver 认为它不能将元素移动到可以输入文本的位置。

您可以尝试 browser.window.maximize,或 browser.window.move_to(x,y),或者您可以使用 Alex 出色的 watir-scroll.gem 将元素定位在 chromedriver 可以使用的视口内。