예제 #1
0
파일: webdriver.py 프로젝트: Alatec/eden
    def __init__(self, executable_path="phantomjs",
                 port=0, desired_capabilities=DesiredCapabilities.PHANTOMJS,
                 service_args=None, service_log_path=None):
        """
        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.
        """
        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

        # Patch to support Native PhantomJS script
        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")
예제 #2
0
 def __init__(self, driverType='phantomjs', user=''):
     if driverType == 'phantomjs':
         try:
             self.runseleniumserver()
             service = Service('/usr/local/share/phantomjs/bin/phantomjs', service_args=['--webdriver=8910','--webdriver-selenium-grid-hub=http://127.0.0.1:4444/grid/register'])
             service.start()
             print "started service"
         except Exception as e:
             print 'Couldnt start service...'
             print type(e)
             print e
             return
     driver = BrowsingManager.getDriver(self, driverType)
     if driver:
         self.driver = driver
         self.id = user
         self.log = user
         self.track = user+'.trck'
         self.cookie = user+'.cook'
예제 #3
0
    def __init__(self,
                 executable_path="phantomjs",
                 port=0,
                 desired_capabilities=DesiredCapabilities.PHANTOMJS,
                 service_args=None,
                 service_log_path=None):
        """
        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.
        """
        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

        # Patch to support Native PhantomJS script
        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")
예제 #4
0
class WebDriver(RemoteWebDriver):
    """
    Wrapper to communicate with PhantomJS through Ghostdriver.

    You will need to follow all the directions here:
    https://github.com/detro/ghostdriver
    """
    def __init__(self,
                 executable_path="phantomjs",
                 port=0,
                 desired_capabilities=DesiredCapabilities.PHANTOMJS,
                 service_args=None,
                 service_log_path=None):
        """
        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.
        """
        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

        # Patch to support Native PhantomJS script
        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")

    def quit(self):
        """
        Closes the browser and shuts down the PhantomJS executable
        that is started when starting the PhantomJS
        """
        try:
            RemoteWebDriver.quit(self)
        except:
            # We don't care about the message because something probably has gone wrong
            pass
        finally:
            self.service.stop()

    def execute_phantomjs(self, script, *args):
        """
        Synchronously Executes JavaScript in the PhantomJS context.
        This allows access to advanced features like clipRect.

        :Args:
         - script: The JavaScript to execute.
         - \*args: Any applicable arguments for your JavaScript.

        :Usage:
            driver.execute_phantomjs('')
        """
        #script = script.replace("\"", "\\\"")
        converted_args = list(args)
        return self.execute(Command.EXECUTE_PHANTOM_SCRIPT, {
            'script': script,
            'args': converted_args
        })['value']
예제 #5
0
파일: webdriver.py 프로젝트: Alatec/eden
class WebDriver(RemoteWebDriver):
    """
    Wrapper to communicate with PhantomJS through Ghostdriver.

    You will need to follow all the directions here:
    https://github.com/detro/ghostdriver
    """

    def __init__(self, executable_path="phantomjs",
                 port=0, desired_capabilities=DesiredCapabilities.PHANTOMJS,
                 service_args=None, service_log_path=None):
        """
        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.
        """
        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

        # Patch to support Native PhantomJS script
        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")

    def quit(self):
        """
        Closes the browser and shuts down the PhantomJS executable
        that is started when starting the PhantomJS
        """
        try:
            RemoteWebDriver.quit(self)
        except:
            # We don't care about the message because something probably has gone wrong
            pass
        finally:
            self.service.stop()

    def execute_phantomjs(self, script, *args):
        """
        Synchronously Executes JavaScript in the PhantomJS context.
        This allows access to advanced features like clipRect.

        :Args:
         - script: The JavaScript to execute.
         - \*args: Any applicable arguments for your JavaScript.

        :Usage:
            driver.execute_phantomjs('')
        """
        #script = script.replace("\"", "\\\"")
        converted_args = list(args)
        return self.execute(Command.EXECUTE_PHANTOM_SCRIPT,
            {'script': script, 'args':converted_args})['value']