0

我有一个看似简单的用例:我启动一个脚本(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 ......任何你能提出的建议都可能会有所帮助。

4

1 回答 1

1

您需要重定向stdin子进程并写入其中。参见例如subprocess.Popen.communicate

于 2013-02-12T01:42:50.473 回答