如何在 mechanize ruby 中设置超时?

How to setTimeout in mechanize ruby?

我想在 mechanize ruby 中使用 setTimeout 来加载整页。

我已经尝试关注了。但没用

mech = Mechanize.new { |agent|
  agent.open_timeout   = 5
  agent.read_timeout   = 5
}

有什么想法吗?

我猜您正在尝试使用 JavaScript 中的 setTimeout 方法,但不幸的是,Mechanize 不理解 JavaScript 并且无法真正使用它(参见 this question for more info). The methods that you're using are separate from the setTimeout functionality in JavaScript. You might have success with something like this using Watir 或类似内容:

# this assumes that `browser' is a `Watir::Browser' object
browser.execute_script("window.setTimeout(my_code, 2000)")

显然还有一个 idle_timeout,但我不确定有什么区别,或者它是否真的有效:

mech.methods.grep /timeout=/
#=> [:idle_timeout=, :open_timeout=, :read_timeout=]