0

在自动化中,我正在尝试使用 rautomation 处理窗口弹出窗口。我安装了以下宝石:

ffi (1.9.0 x86-mingw32, 1.8.1 x86-mingw32)
rautomation (0.9.2)

我试过以下:

require 'rautomation'
window = RAutomation::Window.new :title => "Opening rautomation-0.9.2.gem"

=> #<RAutomation::Window:0x2c4bd30 @adapter=:win_32, @window=#<RAutomation::Adapter::Win32::Window:0x2ccd7c8 @container=#<RAutomation::Windo
w:0x2c4bd30 ...>, @locators={:index=>0, :title=>"Opening rautomation-0.9.2.gem"}>>

默认情况下,适配器未设置为 ffi(它设置为 win_32,我使用的是 windows 机器),因此我尝试将其设置为 ffi:

window.hwnd
=> 1508532
new_window = RAutomation::Window.new :hwnd => 1508532, :adapter => :ffi

但这会导致以下错误:

NameError: uninitialized constant RAutomation::Adapter::Ffi
        from C:/Ruby193/lib/ruby/gems/1.9.1/gems/rautomation-0.9.2/lib/rautomation/window.rb:67:in `const_get'
        from C:/Ruby193/lib/ruby/gems/1.9.1/gems/rautomation-0.9.2/lib/rautomation/window.rb:67:in `initialize'
        from (irb):7:in `new'
        from (irb):7
        from C:/Ruby193/bin/irb:12:in `<main>'

以下是我的问题:

  1. 为什么即使我的机器上安装了 ffi,适配器也没有设置为 ffi?
  2. 如何解决我尝试将适配器设置为 ffi 时遇到的错误?(为此我也做过:设置 RAUTOMATION_ADAPTER=ffi 仍然无法正常工作)
4

1 回答 1

1

这里的问题是适配器:win_32的新名称。:ffi换句话说,您已经在使用正确的适配器,这就是为什么您不能再将其设置为使用:ffi适配器,因为该名称不存在。

为什么要首先将其设置为:ffi?是否有一些过时的文档来自您的想法?

于 2013-07-20T08:38:37.593 回答