首页 > 解决方案 > 如果机器无人看管,ruby watir browser.send_keys 会在 60 秒后超时

问题描述

我正在使用 send_keys 我必须按 Enter

@ie.element(:css, "#accountSwitcherSelect.dijitDownArrowButton").send_keys :enter

这使得切换帐户的另一个对象可见

@ie.div(:id => "accountSwitcherSelect_dropdown").table(:id => "accountSwitcherSelect_menu")

这是踢球者,如果我在那里,它可以完美地工作,并且浏览器在前景中处于焦点。

但是,如果我 a) 锁定 Windows 操作系统屏幕,或者 b) 正在远程桌面上工作并退出 RDP,或者 c) 开始在无人看管的机器上从计划任务运行 ruby​​ 脚本,它将看到第一个下拉列表正好

puts @ie.element(:css, "#accountSwitcherSelect.dijitDownArrowButton").visible?

但它永远不会 send_keys :enter 并且永远不会看到 “accountSwitcherSelect_menu”并抛出

60 秒后超时

错误

watir 6.10.3,红宝石 2.2.5,Windows 操作系统,IE 11

--这是完整的错误信息,第 125 行是

@ie.element(:css, "#accountSwitcherSelect.dijitDownArrowButton").send_keys :enter

C:/ruby225/lib/ruby/gems/2.2.0/gems/rautomation-0.17.0/lib/rautomation/wait_helper.rb:20:in wait_until': timed out after 60 seconds (RAutomation::WaitHelper::TimeoutError) from C:/ruby225/lib/ruby/gems/2.2.0/gems/rautomation-0.17.0/lib/rautomation/adapter/win_32/window.rb:153:in block in send_keys' 来自 C:/ruby225/lib/ruby/gems/ 2.2.0/gems/rautomation-0.17.0/lib/rautomation/adapter/win_32/window.rb:152:in each' from C:/ruby225/lib/ruby/gems/2.2.0/gems/rautomation-0.17.0/lib/rautomation/adapter/win_32/window.rb:152:in send_keys' 来自 C:/ruby225/lib/ruby/gems/2.2.0/gems/rautomation-0.17 .0/lib/rautomation/window.rb:192:in send_keys' from C:/ruby225/lib/ruby/gems/2.2.0/gems/watir-classic-4.3.0/lib/watir-classic/browser.rb:452:in send_keys '来自 C:/ruby225/lib/ruby/gems/2.2.0/gems/watir-classic-4.3.0/lib/watir-classic/element。 rb:124:in send_keys ' from DeleteTriggers8.rb:125:inblock in ' from DeleteTriggers8.rb:106:in each' from DeleteTriggers8.rb:106:in'

标签: rubywindowsfocuswatirsendkeys

解决方案


谢谢@Rajagopalan,浏览器窗口焦点问题似乎是现已弃用的 watir-classic 的限制。切换到最新的 watir-webdriver 解决了这个问题。


推荐阅读