2017-01-09 18 views
1

最後のタブを閉じないような小さなプログラムがあります。最後のタブを閉じませんが、複数のタブがある場合、それは1を閉じますmarionette_driver.marionetteインポートマリオネットPythonのマリオネットクライアントが最後のウィンドウを閉じない

  client = Marionette("localhost", socket_timeout=30, port=proc_port) 
      client.start_session() 
      client.set_window_size(1024,768) 
      client.close() 

から

client.quit()を呼び出すとエラーが発生します。

最後のタブ/ウィンドウをPythonのマリオネットクライアントから閉じるにはどうすればよいですか?

答えて

0

私は先に進んでこれに自分自身で答えるでしょう。クラッシュの多くの後、私はクラッシュの文字列を下に検索し、それがコードを探しmariontte.py

用Mozillaの開発ネットワーク上のthis fileに私を導く私はこれらの線に

@do_process_check 
def quit(self, in_app=False): 
    """Terminate the currently running instance. 

    This command will delete the active marionette session. It also allows 
    manipulation of eg. the profile data while the application is not running. 
    To start the application again, start_session() has to be called. 

    :param in_app: If True, marionette will cause a quit from within the 
        browser. Otherwise the browser will be quit immediately 
        by killing the process. 
    """ 
    if not self.instance: 
     raise errors.MarionetteException("quit() can only be called " 
             "on Gecko instances launched by Marionette") 

私が取得保管

を見ましたクラッシュ quit() can only be called on Gecko instanced launched by Marionette

私は周りを見て強制終了オプションを見たので、私はそれを試み、それは最後のFirefoxのウィンドウを殺すようです。

Firefoxのチームがこれを修正できるか、APIを間違って使用している可能性があります。

複数のタブが開いている場合は、そのウィンドウハンドルに切り替えて、そのウィンドウハンドルでclient.close()を呼び出して閉じます。

1つのだけのタブは、私が最後のウィンドウを閉じて終了する

client._send_message("quitApplication", {"flags": ["eForceQuit"]}) 

を呼び出す必要があったもはや作品ということで、私のために、開いたままにしている場合。

関連する問題