0

繰り返しテストするために自動化する必要がある ncurses アプリがいくつかあります。「send」コマンドの間に「sleep」コマンドを配置しています。ただし、画面が読み込まれる前に、すべてのスリープが最初に実行されることがわかります。送信を連結し(スリープ中の画面の下部にあることがわかります)、それらを一緒に発行することを期待しています。

「send -s」または「send -h」ですべてのキーを送信しようとしました。それはわずかに役立ちます。1行目の「-f」を「-b」に置き換えました-これも小さな違いです。

「睡眠」が適切なタイミングで一時停止しないのはなぜですか。ちなみに、私のプログラムには getc() ループがあるので、「expect」コマンドを使用できません。私もそれを試しました。

#!/usr/bin/expect -f
spawn ruby testsplit.rb
#expect
set send_human {3 3 5 5 7}
set send_slow {10 1}
exp_send -s -- "--"
exec sleep 3
send -s "+"
send -s "="
sleep 1
send -h -- "-"
send -h -- "-"
sleep 1
send -h  -- "v"
interact
4

1 に答える 1

0

送信とスリープを続行する前に、Ruby プログラムが起動するのを待つ必要があると思います。ruby プログラムが起動時に出力する文字列はありますか (例: "ready")。もしそうなら、expect をコメントアウトした時点でexpect "ready"、Ruby プログラムが開始されるまで Expect が続行するのを待つようにします。

于 2010-02-09T08:22:12.677 に答える