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)
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')
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")
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")