示例#1
0
 def remote_run_keyword(self,uri,name,*args):
     '''可以使用这个关键字在远程机上运行远程机的关键字。
         uri=http://192.168.7.108:8270   远程机的IP和端口。
         name=keyword   在远程机上运行的关键字。
         *args=args   关键字参数,可以是多个,用括号括起来。
         你可以在suit的添加全局变量,定义uri。
     '''
     client=Remote(uri)
     client.run_keyword(name=name,args=args,kwargs=False)
def runkey(*args,**kwargs):
    rem=Remote(uri='http://172.17.21.111:8270')
    print('rem ',rem)
    keywork_name=rem.get_keyword_names()
    print(keywork_name)
    rem.run_keyword('http_serv',args=args,kwargs=kwargs)
    #time.sleep(60)
    #rem.run_keyword('stop_remote_server',args=args,kwargs=kwargs)
    rem.run_keyword('http_serv_stop',args=args,kwargs=kwargs)
示例#3
0
 def remote_run_keyword(self, uri, name, *args):
     '''可以使用这个关键字在远程机上运行远程机的关键字。
         uri=http://192.168.7.108:8270   远程机的IP和端口。
         name=keyword   在远程机上运行的关键字。
         *args=args   关键字参数,可以是多个,用括号括起来。
         你可以在suit的添加全局变量,定义uri。
     '''
     client = Remote(uri)
     client.run_keyword(name=name, args=args, kwargs=False)
 def __init__(self, name):
     """
     Import a library so that the library instance is shared between executions.
     [https://pabot.org/PabotLib.html?ref=log#import-shared-library|Open online docs.]
     """
     # FIXME: RELATIVE IMPORTS WITH FILE NAME
     self._remote = None
     if BuiltIn().get_variable_value("${%s}" % PABOT_QUEUE_INDEX) is None:
         logger.debug(
             "Not currently running pabot. Importing library for this process."
         )
         self._lib = RemoteLibraryFactory(TestLibrary(name).get_instance())
         return
     uri = BuiltIn().get_variable_value("${PABOTLIBURI}")
     logger.debug("PabotLib URI %r" % uri)
     remotelib = Remote(uri) if uri else None
     if remotelib:
         try:
             port = remotelib.run_keyword("import_shared_library", [name], {})
         except RuntimeError:
             logger.error("No connection - is pabot called with --pabotlib option?")
             raise
         self._remote = Remote("http://127.0.0.1:%s" % port)
         logger.debug(
             "Lib imported with name %s from http://127.0.0.1:%s" % (name, port)
         )
     else:
         logger.error("No connection - is pabot called with --pabotlib option?")
         raise AssertionError("No connection to pabotlib")
    def _run_keyword_in_java_application(self, name, args, **kwargs):
        remote_url = "http://127.0.0.1:{0}".format(self._port)
        remote_java_app = Remote(remote_url)
        try:
            # Convert all the arguments to strings
            string_arguments = []
            for argument in args:
                string_arguments.append(str(argument))

            # The interface of the Remote library changes in robot framework 2.8.3 to take an additional dictionary for keyword arguments
            if robot.version.get_version() >= '2.8.3':
                return_value = remote_java_app.run_keyword(name, string_arguments, kwargs)
            else:
                return_value = remote_java_app.run_keyword(name, string_arguments)
        except Exception as inst:
            # Take a screenshot if, we need to
            if self._take_screenshot_on_failure:
                output_directory = BuiltIn().replace_variables('${OUTPUTDIR}')
                screenshot_file_name = 'screenshot_java_0000.png'
                index = 0
                while os.path.exists(os.path.join(output_directory, screenshot_file_name)):
                    index += 1
                    screenshot_file_name = 'screenshot_java_{0:04d}.png'.format(index)
                # Use the remote library directly to avoid infinite loops
                # The interface of the Remote library changes in robot framework 2.8.3 to take an additional dictionary for keyword arguments
                if robot.version.get_version() >= '2.8.3':
                    remote_java_app.run_keyword("takeScreenshot", [os.path.join(output_directory, screenshot_file_name)], {})
                else:
                    remote_java_app.run_keyword("takeScreenshot", [os.path.join(output_directory, screenshot_file_name)])
                # Log link to screenshot in ancjhor to make the screenshot clickable for a bigger version
                logger.info('<a href="{0}"><img  src="{0}" width="600px" /></a>'.format(
                    screenshot_file_name.replace("\\", "/")), html=True)
            # Raise exception back to robot framework
            raise
        return return_value
class SharedLibrary(object):

    ROBOT_LIBRARY_SCOPE = 'GLOBAL'

    def __init__(self, name):
        """
        Import a library so that the library instance is shared between executions.
        [https://pabot.org/PabotLib.html?ref=log#import-shared-library|Open online docs.]
        """
        # FIXME: RELATIVE IMPORTS WITH FILE NAME
        self._remote = None
        if BuiltIn().get_variable_value('${%s}' % PABOT_QUEUE_INDEX) is None:
            logger.debug(
                "Not currently running pabot. Importing library for this process."
            )
            self._lib = RemoteLibraryFactory(TestLibrary(name).get_instance())
            return
        uri = BuiltIn().get_variable_value('${PABOTLIBURI}')
        logger.debug('PabotLib URI %r' % uri)
        remotelib = Remote(uri) if uri else None
        if remotelib:
            try:
                port = remotelib.run_keyword("import_shared_library", [name],
                                             {})
            except RuntimeError:
                logger.error(
                    'No connection - is pabot called with --pabotlib option?')
                raise
            self._remote = Remote("http://127.0.0.1:%s" % port)
            logger.debug("Lib imported with name %s from http://127.0.0.1:%s" %
                         (name, port))
        else:
            logger.error(
                'No connection - is pabot called with --pabotlib option?')
            raise AssertionError('No connection to pabotlib')

    def get_keyword_names(self):
        if self._remote:
            return self._remote.get_keyword_names()
        return self._lib.get_keyword_names()

    def run_keyword(self, name, args, kwargs):
        if self._remote:
            return self._remote.run_keyword(name, args, kwargs)
        result = self._lib.run_keyword(name, args, kwargs)
        if result['status'] == 'FAIL':
            raise AssertionError(result['error'])
        return result.get('return')
示例#7
0
文件: client.py 项目: jufei/BtsShell
class JavaRemoteClient(object):

    def __init__(self, url, keyword_class):
        self.keyword_class = keyword_class
        self._robot_remote = Remote(url)
        self._keyword_names = None
        self._keyword_arguments = {}
        self._keyword_documentation = {}

    def get_keyword_names(self):
        """Returns a list of available keywords."""
        if self._keyword_names is None:
            self._keyword_names = self._robot_remote.get_keyword_names()
            if 'stop_remote_server' in self._keyword_names:
                self._keyword_names.remove('stop_remote_server')
        return self._keyword_names

    def run_keyword(self, name, args, kwargs):
        """Runs given keyword."""
        result = self._robot_remote.run_keyword(name, args, kwargs)
        return self._wrap_if_dict(result)

    def _wrap_if_dict(self, value):
        return object_dict(value) if isinstance(value, dict) else value

    def get_keyword_arguments(self, name):
        """Returns a list of argument names for given keyword."""
        if name not in self._keyword_arguments:
            self._keyword_arguments[name] = self._robot_remote.get_keyword_arguments(name)
        return self._keyword_arguments[name]

    def get_keyword_documentation(self, name):
        """Returns the documentation for given keyword."""
        if name not in self._keyword_documentation:
            self._keyword_documentation[name] = self._robot_remote.get_keyword_documentation(name)
        return self._keyword_documentation[name]
 def stop_local_Rserver(self):
     from robot.libraries.Remote import Remote
     local_server=Remote(uri="http://127.0.0.1:8270")
     local_server.run_keyword(name="stop_remote_server",args="",kwargs="")
     print("local server is stop")
示例#9
0
 def stop_local_Rserver(self):
     from robot.libraries.Remote import Remote
     local_server = Remote(uri="http://127.0.0.1:8270")
     local_server.run_keyword(name="stop_remote_server", args="", kwargs="")
     print("local server is stop")