我需要能够以编程方式触发特定坐标处的鼠标单击.我发现AutoIt和auto_click gem都可以提供这种能力,但仅限于
Windows.我还发现了rautomation gem,旨在提供跨平台功能,但目前似乎不支持Windows以外的任何其他功能.
解决方法
我认为这是一个严重依赖系统的任务.您应该为代码提供一种加载系统相关宝石的方法(Win上的AutoIt,Linux上的Automations).如果您的目标是Mac OS,则可以通过FFI库从CGRemoteOperation.h调用CGPostMouseEvent来构建自己的lib.
例如:
要求’ffi’
module Mouse extend FFI::Library ffi_lib '/System/Library/Frameworks/applicationservices.framework/Versions/A/Frameworks/CoreGraphics.framework/Versions/A/CoreGraphics' class CGPoint < FFI::Struct layout :x,:double,:y,:double end attach_function :CGPostMouseEvent,[ CGPoint,:bool,:int,:bool ],:void end point = Mouse::CGPoint.new point[:x] = 100 point[:y] = 100 Mouse::CGPostMouseEvent(point,true,1,true)