2017-02-18 9 views
0

私はkarmaとslimerjsのlaucherとして動作するスクリプトを作成します。python3xはカルマから端末出力を読み込むにはどうすればいいですか?

それはこのようなものです:

# Load a Karma server 
     print('\nKarma is loading...\n') 
     karma = subprocess.Popen('./karma start', shell=True) 

     # delays for 2 seconds for waiting Karma server 
     time.sleep(2) 

     # Load a headless SlimerJS that points to Karma server 
     slimerjs = subprocess.Popen(
      'xvfb-run slimerjs slimerjs-cfg.js > slimerjs.log', shell=True) 
     print('\nSlimerJS is running...\n') 

それは動作しますが、この、2秒の任意の遅延の大きな問題があります。私はカルマが本当にロードされた後にslimerjsを呼び出すだけでいいので、遅れを使うのです。 しかし、カルマは私にこのようなコンソールに出力できます:だから

18 02 2017 03:11:12.176:WARN [karma]: No captured browser, open http://localhost:9876/ 

18 02 2017 03:11:12.190:INFO [karma]: Karma v1.3.0 server started at http://localhost:9876/ 

を、私は2秒の任意の遅延を置き換えるために、この出力を使用することができ、私もカルマが

を開始WHERE知って出力を得る必要があります

私は、カルマが走っているslimerjsを言うにはサーバのパス/場所(http://localhost:9876/)を取得する必要があります。

私はこのようないくつかのコマンドしようと試み:任意の助けを

FileNotFoundError: [Errno 2] No such file or directory: './karma start' 

p = subprocess.Popen(["./karma start"], stdout=subprocess.PIPE) 
     out, err = p.communicate() 

しかし、Pythonは私にエラーメッセージを与えますか? shell=Trueなし

答えて

1

あなたはこのように見てPopen呼び出し必要があります:あなたは、あなたが使用することができ、Pythonのバージョン> = 3.5を使用している場合

location = p.stdout.split(' ')[-1] 

p = subprocess.Popen(["./karma", "start"], stdout=subprocess.PIPE) 

もウェブサイトを取得するためにsubprocess.runPopenの新しい上位バージョン。ドキュメントhere

関連する問題