'Creates a new instance of the PhantomJS / Ghostdriver.
Starts the service and then creates new instance of the driver.
:Args:
- executable_path - path to the executable. If the default is used it assumes the executable is in the $PATH
- port - port you would like the service to run, if left as 0, a free port will be found.
- desired_capabilities: Dictionary object with non-browser specific
capabilities only, such as "proxy" or "loggingPref".
- service_args : A List of command line arguments to pass to PhantomJS
- service_log_path: Path for phantomjs service to log to.'

def __init__(self, executable_path='phantomjs', port=0, desired_capabilities=DesiredCapabilities.PHANTOMJS, service_args=None, service_log_path=None):

    self.service = Service(executable_path, port=port, service_args=service_args, log_path=service_log_path)
    self.service.start()
    command_executor = self.service.service_url
    try:
        RemoteWebDriver.__init__(self, command_executor=command_executor, desired_capabilities=desired_capabilities)
    except:
        self.quit()
        raise
    self._is_remote = False
    self.command_executor = RemoteConnection(command_executor, keep_alive=False)
    Command.EXECUTE_PHANTOM_SCRIPT = 'executePhantomScript'
    self.command_executor._commands[Command.EXECUTE_PHANTOM_SCRIPT] = ('POST', '/session/$sessionId/phantom/execute')
