def pytest_runtest_teardown(self, item): BaseTarget.pytest_runtest_teardown(self, item) try: if not OSHelper.is_windows(): if item.funcargs['firefox'].runner and item.funcargs[ 'firefox'].runner.process_handler: quit_firefox() status = item.funcargs[ 'firefox'].runner.process_handler.wait(10) if status is None: item.funcargs['firefox'].browser.runner.stop() else: item.funcargs['firefox'].stop() if not target_args.save: profile_instance = item.funcargs['firefox'].profile if os.path.exists(profile_instance.profile): try: shutil.rmtree(profile_instance.profile, ignore_errors=True) except sqlite3.OperationalError: pass else: logger.error('Invalid Path: %s' % profile_instance.profile) except (AttributeError, KeyError): pass
def stop(self): if OSHelper.is_windows(): quit_firefox() if FXRunner.process.pid is not None: logger.debug("Closing Firefox process ID: %s" % FXRunner.process.pid) try: process = psutil.Process(pid=FXRunner.process.pid) if process.children() is not None: for proc in process.children(recursive=True): proc.kill() if psutil.pid_exists(process.pid): logger.debug("Terminating PID :%s" % process.pid) process.terminate() except psutil.NoSuchProcess: logger.debug("Failed to find and close Firefox PID: %s" % FXRunner.process.pid) # shutdown_process('firefox') else: if self.runner and self.runner.process_handler: quit_firefox() status = self.runner.process_handler.wait( DEFAULT_FIREFOX_TIMEOUT) if status is None: self.runner.stop()
def stop(self): if OSHelper.is_windows(): quit_firefox() if FXRunner.process.pid is not None: logger.debug('Closing Firefox process ID: %s' % FXRunner.process.pid) if OSHelper.is_windows(): import ctypes process_terminate = 1 handle = ctypes.windll.kernel32.OpenProcess( process_terminate, False, FXRunner.process.pid) ctypes.windll.kernel32.TerminateProcess(handle, -1) ctypes.windll.kernel32.CloseHandle(handle) else: process = psutil.Process(pid=FXRunner.process.pid) try: if process.children() is not None: for proc in process.children(recursive=True): proc.kill() try: if psutil.pid_exists(process): logger.debug('Terminating PID :%s' % process) process.terminate() else: pass except ProcessLookupError: pass except subprocess.CalledProcessError: logger.error( 'Failed to close Firefox PID process. Closing Firefox process by name.' ) shutdown_process('firefox') else: if self.runner and self.runner.process_handler: quit_firefox() status = self.runner.process_handler.wait( DEFAULT_FIREFOX_TIMEOUT) if status is None: self.runner.stop()
def stop(self): if OSHelper.is_windows(): quit_firefox() if FXRunner.process.pid is not None: try: logger.debug('Closing Firefox process ID: %s' % FXRunner.process.pid) process = psutil.Process(FXRunner.process.pid) for proc in process.children(recursive=True): proc.kill() process.kill() except subprocess.CalledProcessError: logger.error( 'Failed to close Firefox PID process. Closing Firefox process by name.' ) shutdown_process('firefox') else: if self.runner and self.runner.process_handler: quit_firefox() status = self.runner.process_handler.wait( DEFAULT_FIREFOX_TIMEOUT) if status is None: self.runner.stop()