Exemplo n.º 1
0
    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
Exemplo n.º 2
0
    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()
Exemplo n.º 3
0
    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()
Exemplo n.º 4
0
 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()