2

我过去曾将 VBScript 用于 QTP,我可以使用输入框功能来显示一个弹出窗口。

我想知道是否有办法用 Ruby 做到这一点?我需要一个弹出窗口,允许用户在 WATIR 脚本执行之前输入一些信息。

我环顾 StackOverflow,但什么也没看到。

4

5 回答 5

3

这是一个如何从 Ruby 中的 vbscript 获取消息框的示例,我将尝试以相同的方式获取输入框

require "Win32API"  

message = "This is a sample Windows message box generated using Win32API"  
title = "Win32API from Ruby"  

api = Win32API.new('user32','MessageBox',['L', 'P', 'P', 'L'],'I')  
api.call(0,message,title,0)  
于 2012-09-20T19:47:21.703 回答
2

也许这个示例代码可以帮助你(仅限win32):

require 'win32ole'

def inputbox( message, title="Message from #{__FILE__}" )
  vb_msg = %Q| "#{message.gsub("\n",'"& vbcrlf &"')}"|
  vb_msg.gsub!( "\t", '"& vbtab &"' )
  vb_msg.gsub!( '&""&','&' )
  vb_title = %Q|"#{title}"|
  # go!
  sc = WIN32OLE.new( "ScriptControl" )
  sc.language = "VBScript"
  sc.eval(%Q|Inputbox(#{vb_msg}, #{vb_title})|)
  #~ sc.eval(%Q|Inputbox(#{vb_msg}, #{vb_title}, aa,hide)|)
end
def popup(message)
  wsh = WIN32OLE.new('WScript.Shell')
  wsh.popup(message, 0, __FILE__)
end


str = "a |  does not break it...\n\nOne\n\tTwo tabbed\nThree..."
res = inputbox( str, "demonstration | title")
popup %Q|When asked\n\n"#{str}"\n\nyou answered:\n#{res}| 

这导致:

输入框

它跟随一个弹出框。

另请参阅http://rubyonwindows.blogspot.com/2007/04/ruby-excel-inputbox-hack.html

于 2012-09-20T19:36:02.333 回答
1

由于我找不到适用于 Windows 的输入框 api,所以如果我需要一些简单的对话框,我大部分时间都会这样做。与红鞋不同,它只是一个易于安装的宝石。

require 'green_shoes'
Shoes.app{
  e = edit_line
  button("Click me!"){alert("You entered." + e.text)}
}
于 2012-09-20T20:00:45.003 回答
0

Ruby 是一种编程/脚本语言,所以它自己不做任何类型的 GUI 或图形相关的东西。话虽如此,有很多项目和框架使用 Ruby 来完成您正在寻找的事情。最重要的是使用 Ruby 创建 Web 应用程序的Ruby on Rails,以及用于创建计算机应用程序的Shoes 。

还有这个问题 What's the best/easy GUI Library for Ruby?

于 2012-09-20T19:31:52.580 回答
0

我会推荐shoes,它是一个用于编写图形应用程序的跨平台工具包。

我用过它,它很酷,你可以这样做:

Shoes.app :width => 300, :height => 200 do
  stack do
    edit_line :width => 400
  end
end
于 2012-09-20T20:02:56.083 回答