我正在尝试使用Ruby下的黄瓜自动执行一些测试任务,使用TE3270 gem和X3270免费驱动程序连接到Mainframe平台,但是打开Mainframe屏幕的一部分不能再进一步了。
代码在Windows 7上运行,Ruby 2.1。
这是我根据TE3270网站上显示的代码:
require 'TE3270'
World(TE3270::ScreenFactory)
Before do
@emulator = TE3270.emulator_for :x3270 do |platform|
platform.executable_command = '"C:\Program Files (x86)\wc3270\wc3270.exe"'
platform.host = 'mainframe.hostname'
platform.max_wait_time = 5 # defaults to 10
platform.trace = true # turns on trace output from the emulator
end
end
Given /^my connection$/ do
my_screen = MainframeScreen.new(@emulator)
my_screen.userid = 'my_mainframe_user'
my_screen.password = 'my_mainframe_password'
end
class MainframeScreen
include TE3270
text_field(:userid, 19, 36, 8)
text_field(:password, 20, 36, 8)
def login(username, password)
self.userid = username
self.password = password
end
end
有什么想法吗?
此致 强尼
答案 0 :(得分:1)
我现在不使用黄瓜,但我确实有一些工作代码可供阅读和写作。
我正在使用s3270无显示工具将屏幕抓取脚本编写为platform.executable_command
。 (现在在Mac上,但我过去也在Windows上使用过它;你只需要download和install from source。)
到目前为止,这对我有用的关键是wait_for_string功能。我还建议使用text方法转储屏幕输出。
require 'te3270'
class MainframeScreen
include TE3270
text_field(:welcome, 3, 34, 14, false)
text_field(:application, 22, 21, 8)
end
emulator = TE3270.emulator_for :x3270 do |platform|
platform.executable_command = 's3270'
platform.host = '192.168.1.1'
end
screen = MainframeScreen.new(emulator)
screen.wait_for_string "Welcome to IBM", 3, 34
puts screen.welcome
screen.populate_screen_with :application => 'TSO'
screen.send_keys TE3270.Enter