我有一个看似简单的用例:我启动一个脚本(python 或 bash),它从命令提示符运行模拟器,然后模拟器接受命令,直到我键入 ctrl-c 或退出。我想从 shell 做同样的事情,我下面的代码不起作用。我想做的是测试自动化,所以我想从命令外壳直接向应用程序发出命令。在python中,我有以下内容:
import os
import subprocess
command = ['/usr/local/bin/YCTV-SIM.sh', '-Latest'] #emulator for yahoo widgets
process = subprocess.Popen( command, shell=True, stdin=subprocess.PIPE )
time.sleep(12) #wait for launch to finish
print '/widgets 1' #first command to issue
print '/key enter' #second command to issue
process.wait()
如您所见,这是一些非常简单的东西。当从命令 shell 启动“YCTV-SIM.sh”时,我进入输入模式,我的键条目被发送到应用程序 shell(YCTV-SIM.sh 读取原始输入),所以理想情况下,我能够将文本直接传送到此应用程序外壳。到目前为止,什么都没有发生;测试输出到控制台窗口,但应用程序不响应我尝试发出的命令。我正在使用 python 2.6.3,如果这很重要,但不需要 Python ..
语言在这一点上是无关紧要的,所以 PERL、Python、Bash、TCL ......任何你能提出的建议都可能会有所帮助。