2012-03-10 15 views
1

私はいくつかのコマンドを送信するために別のターミナルウィンドウを開く必要があるpythonスクリプトを持っています。 Stackoverflowersはすでにそこまで私を得ている:私は必要pythonスクリプトでstdinをサブプロセスに送信

import subprocess 
server_terminal = subprocess.Popen(['open','-a','/Applications/Utilities/Terminal.app','/Applications/Utilities/Terminal.app']) #Not sure about the inelegance of the doubled path, but it does open another terminal window, which I need. 

次のステップでは、私は、ユーザーのデスクトップ上に設定されたローカルサーバーを得ることができるように、この端末にいくつかのコマンドを送信することです。このサブプロセスを制御する方法を考えるときに重大な問題を抱えています。

私はこのターミナルサブプロセスを私からstdinにする方法を教えてもらえますか?私はサードパーティのモジュールを避けることを好むでしょう。

編集:いくつかのコンテキスト - 私の主な目標は、別の端末ウィンドウでselenium serverを開き、コマンドを発行できるようにすることです。私はすでにサーバーの起動方法を知っていますが、自動的に起動する方法はわかりません。

ありがとうございました!

+1

を、私はあなたがコントロールすることができるとは思いませんSTDINを介して端末。 –

+0

あなたの返事をありがとう。私ができる他の方法? –

+0

ウィンドウハンドルの取得、キーストロークの偽造など。おそらく、シェルにコマンドライン引数としてスクリプトを提供することもできます。しかし、おそらくあなたが望むのは、シンプルなシェルスクリプトを実行することです(ターミナルは全くありません)。あなたが達成したいことについてもっと教えていただけますか? –

答えて

2

あなたは直接サーバーを起動するためにPopenを使用することができます。

selenium_jar = '/full/path/to/selenium-server-standalone-2.0b3.jar' 
path_to_fifo_profile = '...' 

# start external process 
p = subprocess.Popen(['java', '-jar', selenium_jar, 
           '-firefoxProfileTemplate', path_to_fifo_profile, 
        ]) 
# wait for it to finish before exiting 
p.wait() 

あなたが出力を見たい場合は、あなたの代わりにos.systemを使用することができます。

os.system('java ' 
      '-jar /path/to/selenium-server-standalone-2.0b3.jar ' 
      '-firefoxProfileTemplate /path/to/profile') 
+0

'stdin = subprocess.PIPE'を忘れないでください。また、 'communications'はいくつかの入力データを取るべきです。 –

+0

@larsmans:SeleniumサーバーはSTDIN、afaikから読み取るべきではありません。 –

+0

私はSeleniumに精通していませんが、その場合、 'communications'ではなく' wait'を使用すべきですか? –

関連する問題