无法将适配器设置为ffi

时间:2013-07-19 07:37:45

标签: ruby automation rautomation

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

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仍然无法正常工作)

1 个答案:

答案 0 :(得分:1)

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

为什么要首先将其设置为:ffi?是否有一些过时的文档,你有想法这样做?