Manual de Comandos y Buenas Prácticas 0
Robot 1
Buenas prácticas 1
Descripción en Comandos 1
Nombre del Robot 1
Variables 2
Nombre de Variables 2
Limpiar Variables 2
Reglas de Variable 3
Variables heredadas Padre-Hijo 5
Credenciales 6
Validaciones 7
Cerrar Procesos 9
Web 10
Abrir navegador 10
Buenas prácticas 10
Error común 11
Cerrar Navegador 12
Buenas prácticas 12
Abrir una URL 13
Javascript 14
Inyectar librería JS 14
Ejecutar archivo JS 16
Ejecuta JS 18
Cambiar a IFRAME 22
Cambiar a Contenido por defecto 25
Seleccionar un objeto 26
Extraer texto 27
Extraer tabla 29
Obtener el valor de input 31
Obtener imagen de objeto 32
Enviar Texto Web 34
Contar ventanas 37
Cerrar ventana 38
Obtener handle de ventana 40
Obtener título de ventana 41
Cambiar a ventana 42
Buenas prácticas 43
Cambiar de navegador 44
Maximizar 45
Minimizar 46
Esperar Por Objeto 47
Buenas prácticas 48
Sistema 50
Esperar 50
Asignar Variable 51
Último estado. 52
Ingreso de Información Web 53
Ejecutar aplicación. 54
Scripts 55
Ejecutar archivo Python 55
Execute Python 56
Ejecutar JSON Rocketbot 57
Buena práctica 57
Ejecuta otro script RocketBot 58
Buenas prácticas 59
Retornar Información 63
Detener este robot 65
Detener todo y salir 66
Desktop 67
Mover Mouse 67
Buena práctica 67
Mouse Srcoll 68
Buenas prácticas 76
While 78
Buenas prácticas 78
Break 79
For 80
Try Catch 81
Archivos 82
Guardar texto en archivo 82
Control de archivos 83
Mover o renombrar archivo 83
Copiar Archivo 84
Borrar archivo 85
Listar archivos 86
Listar carpetas 87
Enviar a papelera 88
Compresión de archivos 89
Comprimir un archivo o una carpeta en un ZIP 89
Descomprimir ZIP 90
PDF 91
Extraer texto de PDF 91
Convertir imagen a PDF 92
Agregar imagen a PDF 93
XLSX 94
Nuevo xlsx 94
Buenas prácticas 95
Abrir xlsx 96
Buenas prácticas 96
Guardar xlsx 97
Obtener Hojas 98
Cambiar de Hoja 99
Cambiar de Archivo 100
Contar Filas 101
Buenas prácticas 101
Contar Columnas 102
Obtener celda 103
Buenas prácticas 103
Escribir Celda 104
Virtualización 105
OCR a imagen 110
Esperar por imagen 111
Buenas prácticas 111
Tips 111
Windows 112
macOS 118
MySQL 120
Configurar conexión Mysql 120
Buenas prácticas 120
Consulta MySQL 121
Buenas prácticas 121
Email 121
SMTP - IMAP 122
Configurar servidor 122
Buenas prácticas 122
Enviar Email SMTP 124
Listar todos los email IMAP 125
Listar email nuevos IMAP 127
Leer email por ID IMAP 128
Conexión HTTP 129
Conectar url GET 129
Conectar URL avanzado 130
Integración con Aplicaciones 132
Excel 132
Nuevo Libro 132
Buenas prácticas 133
Abrir archivo 134
Buenas prácticas 134
Guardar Archivo 135
Buenas prácticas 135
Exportar a PDF 136
Cerrar Excel 145
Buenas prácticas 145
Logs en Rocketbot 146
Estructura de Logs de Rocketbot 146
Visualizar errores en Rocketbot 147
Recomendaciones para generar Logs. 148
Robots en Paralelo 149
Escritorio Remoto 151
Buenas prácticas 151
Robot
Buenas prácticas
Descripción en Comandos
Agregar descripciones en los comandos nos ayuda a comprender cuál es la acción específica que este realiza, lo que es de suma importancia a la hora de modificar un robot, ya sea para cambiar funcionalidades o identificar posibles errores.
Nombre del Robot
Nunca utilizar espacios, ñ, ni caracteres especiales en el nombre del robot, si el nombre fuera compuesto por varias palabras puede utilizarse el siguiente formato: snake_case, camelCase o PascalCase.
Variables
Nombre de Variables
En la definición de variables nunca se deben utilizar espacios, ñ, o caracteres especiales, en caso de utilizar palabras compuestas se pueden utilizar guiones bajos o comenzar la siguiente palabra con Mayúscula como por ejemplo: snake_case, camelCase o PascalCase.
Limpiar Variables
Es buena práctica limpiar las variables que no requieren valores fijos, al principio de nuestro bot, es recomendable utilizar el comando “Limpiar Variable(s)” del módulo System++, ya que si limpiamos una por una tendremos un comando por cada variable, lo que se pueden reducir a sólo uno con la siguiente instrucción:
Documentación de Rocketbot Studio 2
Reglas de Variable String
Cuando queremos trabajar con variables de tipo String en Rocketbot, debemos pasarlas a comillas dobles, ejemplo.
● Tenemos una variable llamada {texto} la cual contiene lo siguiente:
Si queremos por ejemplo modificar parte del texto, podemos utilizar el método de string1 llamado replace(), en este caso si solo pasamos la variable, nos arrojará un error de sintaxis:
Debemos indicar que la variable {texto} la trabaje como un string, y para eso debemos pasarla entre comillas dobles “{texto}”.
Si además nuestra variable es un string pero contiene saltos de líneas, entonces
Si volvemos a ejecutar el comando anterior, nos arrojará un error:
Al pasarla a triple comilla doble y espacios, ejecutará el método sin problema:
Documentación de Rocketbot Studio 4
Variables heredadas Padre-Hijo
Las variables del PADRE pueden ser utilizadas por todos los robots de la imagen, el HIJO1 por ejemplo, no puede utilizar las variables de sus hermanos (HIJO2-HIJO3), el NIETO1 puede usar las variables del PADRE y del HIJO1, pero no las del HIJO2 - HIJO3
Credenciales
Como buena práctica es importante utilizar un baúl de credenciales para obtener los datos y no dejarlos fijos.
Si tenemos Mac o Linux, podemos utilizar el siguiente móduloCredentials_, si estamos en Windows, debemos usar el siguiente:Windows Credential Manager.
Podemos encontrar más información acerca de cómo realizarlo, en la documentación de los manuales linkeados arriba.
Documentación de Rocketbot Studio 6
Validaciones
Se deben validar todos los comandos y/o módulos que lo permitan, por ejemplo si es una conexión a una BD, Correo, FTP, Abrir un Archivo, etc. se debe retornar a una variable y tomar una decisión con un IF.
Esto nos permite poder controlar errores y tomar una decisión para que el robot no continúe ejecutándose cuando faltan partes del proceso o cuando no se realizó algo de forma correcta.
Ejemplo:
Crear un archivo excel y validar su correcta creación, si está ok, entonces se escribe en el archivo, sino, se deja un mensaje en el log y se detiene el robot.
Luego realizamos el guardado del archivo, y se valida, si se guardó de forma correcta, entonces cerramos la aplicación, sino, se deja un mensaje en el log y se detiene el robot.
Documentación de Rocketbot Studio 8
Cerrar Procesos
Todos los comandos y/o módulos que permitan cerrar conexiones, se deben agregar al proceso, por ejemplo, cerrar una conexión a una BD, a un FTP, Correo, Cerrar un archivo Excel, XML, etc.
Es necesario siempre cerrar todo lo que se abre con Rocketbot, ya que esto nos permite liberar recursos y evitar errores de ejecución, si el comando o módulo no permite cerrar la conexión o los procesos no son cerrados de forma correcta, se pueden utilizar los
módulos killProcess y/o killApp para terminar de matar procesos zombies.
Ejemplo de un error:
Problema
No se realizó la ejecución de bots desde el Orquestador dado que un proceso no finalizó.
Causa
No llega la respuesta de proceso finalizado al Orquestador. Esto ocurre cuando se trabaja con un proceso que queda en segundo plano o no finaliza al terminar el robot.
Por ejemplo, abrir alguna aplicación.
Solución
Agregar el comando killProcess y/o killApp al final del flujo para que cierre cualquier proceso zombie que pudiera estar activo e impida notificar al Orquestador el término del proceso.
Web
Abrir navegador
Opciones:
● Selecciona navegador: Chrome/Firefox/IE
● URL de Servidor: Indicar la url de la página a la cual queremos acceder (Si no se elige ninguna abre por defecto https://www.google.com). Admite variables
● Modo de Apertura: Síncrona/Asíncrona.
Sincrónico es el método normal de apertura, el cual espera para continuar con los comandos, no se debe cambiar.
Buenas prácticas
Es óptimo agregar la url en una variable, pensando en escalabilidad, si en algún
momento se requiere que la variable sea dinámica o si necesita cambiar, lo ideal es que Rocketbot lea algún archivo de configuración y setear el valor a la variable para no estar abriendo y modificando el robot.
Documentación de Rocketbot Studio 10
Error común
Los navegadores son controlados por web drivers, estos se encuentran dentro de la carpeta Rocketbot/drivers/{sistema operativo}/{browser}, los mismos deben ser actualizados si se actualiza la versión del navegador y el robot comienza a presentar problemas.
Los drivers los puedes encontrar enhttps://www.seleniumhq.org/download/
Error de driveral intentar abrir navegador, esto sucede cuando el navegador se actualiza, para solucionarlo se debe actualizar el driver según la versión del browser.
Chrome:https://chromedriver.chromium.org/downloads
Mozilla:https://github.com/mozilla/geckodriver/releases/tag/v0.29.0 Descargar y descomprimir el driver, copiar el archivo en la siguiente ruta:
Rocketbot/drivers/{sistema operativo}/{browser}
Ej: Rocketbot/drivers/win/chrome
Cerrar Navegador
Nos permite cerrar el navegador abierto con Rocketbot, cierra todo incluyendo las pestañas abiertas.
Buenas prácticas
Siempre que realicemos un robot de tipo Web, y ya no necesitemos utilizar más el navegador, debemos agregar el comando Cerrar Navegador, ya que esto además de cerrar el Browser, mata el proceso del driver abierto con Rocketbot. El cual se abre en cada ejecución, por lo que si no se mata y se acumulan demasiados, podría consumir bastante recurso de la máquina.
**Todo lo que se abre con Rocketbot, es óptimo que se cierre al final del proceso o cuando ya no se utilice más, ej: navegador, conexión a BD, conexión a email, Excel, etc.
Documentación de Rocketbot Studio 12
Abrir una URL
Se debe utilizar cuando ya realizamos todas las acciones en la página que se abrió con el comando “Abrir Navegador” y necesitamos cambiar a otra página. Esto redireccionará la actual pestaña a la nueva URL indicada.
Javascript
Inyectar librería JS
Inyecta el código Javascript de una librería a partir de su URL, en el documento actual o IFRAME si se encuentra dentro del IFRAME.
Por ejemplo, si accedemos a una página, en este caso google.com, y necesitamos utilizar la librería moment.js, podemos comprobar en la consola del navegador si la tiene o no.
En este caso no está:
buscamos el cdn de la librería y copiamos su URL
Documentación de Rocketbot Studio 14
Lo pegamos en el comando y ejecutamos
Si volvemos a ejecutar moment en la página, veremos que ahora si nos responde:
Ejecutar archivo JS
Inyecta el código Javascript de un archivo guardado en su equipo, lo inyectará en el documento actual o IFRAME si se encuentra dentro del IFRAME.
Al igual que en el ejemplo anterior, intentamos utilizar moment.js en la página de Google, obteniendo el siguiente error:
Buscamos el archivo JS y ejecutamos el comando
Documentación de Rocketbot Studio 16
Intentamos utilizar la misma instrucción y ahora podemos ver que si la reconoce:
Ejecuta JS
Podemos ejecutar código JS directamente desde Rocketbot, a través de la mini consola.
Por ejemplo si queremos enviar un valor a un input, podemos utilizar un identificador del mismo (en este ejemplo el identificador es un ID llamado empresa) y enviarlo de esta forma:
Documentación de Rocketbot Studio 18
Si necesitamos obtener un resultado desde la página hacia Rocketbot, debemos utilizar el return y asociar la respuesta a una variable.
Por ejemplo acá requerimos obtener el Nombre del artículo, al inspeccionar vemos que tiene una clase, la cual utilizaremos.
De esta forma y con innerText estamos obteniendo el texto y asignándolo a la variable {titulo}
Obtendremos el texto de esta forma:
Documentación de Rocketbot Studio 20
Importante: Para utilizar esta variable como STRING se debe utilizar {variable}.decode() o {variable}.decode(‘latin-1’) en el comando Asignar Variable.
Quedará de esta forma y ya podemos utilizar la información correctamente:
Cambiar a IFRAME
Mueve el focus al IFRAME seleccionado. Ahora todos los comandos JS o acceso a objetos web tomará como referencia el IFRAME seleccionado.
En este ejemplo requerimos realizar un click en el input empresa:
pero nos arroja el siguiente error:
Nos indica que no encuentra el elemento, uno de los errores más comunes es que se encuentre dentro de un iframe, por lo que debemos buscar si el elemento está dentro de alguna etiqueta <iframe>
Documentación de Rocketbot Studio 22
Vemos que el input está dentro de un IFRAME, por lo que debemos utilizar el comando indicando algún identificador del mismo, en este caso usaremos el ID.
Este comando debe ir antes de que interactuemos con el elemento, al ejecutarlo
dejaremos en foco este IFRAME y luego al ejecutar el click ya funcionará correctamente.
Documentación de Rocketbot Studio 24
Cambiar a Contenido por defecto
Mueve el focus al cuerpo del documento. Ahora todos los comandos JS o acceso a objetos web tomará como referencia el cuerpo de la página.
Siguiendo con el ejemplo anterior, si ahora requerimos volver el foco a la página por defecto y salir del IFRAME, debemos utilizar el comando.
Seleccionar un objeto
Selecciona un elemento al cual queremos enviar eventos de teclado a través del comando “Enviar texto Web”. Por ejemplo acá necesitamos seleccionar el País “Chile”, vemos que tiene un ID, por lo cual lo utilizaremos en el comando.
Al ejecutarlo no veremos que se marca el input en la web, pero al enviar el texto con
“Enviar Texto Web” seleccionará la opción requerida.
Documentación de Rocketbot Studio 26
Extraer texto
Podemos extraer el texto de un elemento, por ejemplo: <div>, <span>, <p>, <a>, etc, y retornarlo a una variable.
**Para obtener el texto de un input, se debe utilizar el comando “Obtener el valor de input”
En este caso necesitamos extraer el texto de la búsqueda, al inspeccionar el elemento, vemos que tiene una etiqueta <span>.
Obtenemos su xPath e ingresamos la información al comando, enviando el resultado a una variable, por ejemplo {texto}.
Al ejecutar y revisar nuestra variable, veremos el texto extraído:
Documentación de Rocketbot Studio 28
Extraer tabla
Podemos extraer la información de una tabla con la etiqueta <table> y guardarla en una variable, se obtendrá como una lista (array). Inspeccionamos y buscamos la etiqueta
<table>, obtenemos algún identificador y lo ingresamos en el comando.
Opcional: Podemos codificar los elementos del array e indicar el tipo de codificación:
Al ejecutar y revisar nuestra variable, veremos la tabla extraída:
Tip:
Nos traerá la información como una lista de listas, si la quisiéramos pasar a un Excel (comandos de Integración con aplicaciones) nos podría arrojar un error si los ítems no tienen el mismo largo, por ejemplo vemos que la lista donde se encuentra el mes “Mayo”
solo tiene un valor en comparación con las demás listas que tienen 6. Se podría por ejemplo separar la información, dejando en una variable el mes y en otra solo los valores, de esta forma:
Documentación de Rocketbot Studio 30
Obtener el valor de input
Podemos obtener el valor de un input, puede ser de la etiqueta <input type=”text”> o
<textarea> y lo almacena en una variable.
Por ejemplo, en este caso tenemos un formulario con información pre cargada
inspeccionamos y obtendremos el identificador del input para extraer su información.
Ingresamos la información en el comando y ejecutamos:
Revisamos la variable y veremos el valor extraído:
Obtener imagen de objeto
Extrae una captura de pantalla del objeto según una referencia, manteniendo su tamaño original.
Este comando fue ideado para obtener capturas de captchas y poder resolverlos por medio de librerías externas.
**Considerar tener la resolución de pantalla y el navegador al 100%
En esta página tenemos una imagen, la cual necesitaríamos obtener para luego poder resolver el captcha.
Inspeccionamos y obtenemos el identificador de la imagen, lo ingresamos al comando y ejecutamos.
Documentación de Rocketbot Studio 32
Con esto obtendremos la imagen descargada en la ruta indicada:
Con esa imagen ya podemos utilizar por ejemplo el módulo2Captchapara poder resolverlo.
Enviar Texto Web
Este comando solo acepta una opción, si se escribe un texto (o una variable con texto) no se puede agregar una tecla especial al mismo tiempo, o no funcionará. Al revés lo mismo, si queremos enviar una tecla especial, no podemos también pasar un texto, en ese caso se debe repetir el comando, de esta forma:
Texto
Tecla Especial
Documentación de Rocketbot Studio 34
Click en objeto
Nos permite clickear un objeto en el documento actual, enviando el click izquierdo del mouse.
Si se requiere realizar un click a un elemento que esté dentro de un IFRAME, se debe utilizar el comandoCambiar a IFRAME.
En este ejemplo queremos clickear el input Empresa, obtenemos un identificador, en este caso el ID.
Lo agregamos al comando y ejecutamos, esto dejará el input en foco.
Obtener código HTML
Nos permite obtener el código HTML de la ventana actual del navegador activo abierto por Rocketbot, y almacenar el resultado en una variable.
Nos entregará un resultado como este:
Documentación de Rocketbot Studio 36
Control de ventanas
Contar ventanas
Nos permite contar la cantidad de ventanas (pestañas) abiertas en el navegador de Rocketbot y almacenar el resultado en una variable.
En este caso tenemos dos pestañas:
Agregamos la variable donde queremos retornar el resultado:
Nos entregará lo siguiente:
Cerrar ventana
Nos permite cerrar una ventana (pestaña) del navegador de Rocketbot, a través de su nombre o con la opción “last”, lo cual cerrará la última ventana abierta.
Siguiendo con el ejemplo anterior, para cerrarla podemos indicar el nombre:
Quedando así:
Documentación de Rocketbot Studio 38
O con la opción “last” para la última ventana:
Quedando así:
Obtener handle de ventana
Obtiene el handle de la ventana (pestaña) activa abierta por Rocketbot y lo almacena en una variable.
**Considerar que el handle es variable, al volver a entrar éste cambiará.
Obtendremos algo como esto:
Documentación de Rocketbot Studio 40
Obtener título de ventana
Obtiene el título de la ventana activa del navegador abierto por Rocketbot y lo guarda en una variable.
Obtendremos algo como esto:
Cambiar a ventana
Cuando la página que estamos controlando abre otra ventana (al clickar un botón, enlace, etc.) este comando nos permite cambiarnos a la nueva pestaña y dejarla en foco para poder trabajar con los elementos.
En este ejemplo tenemos en foco la primera pestaña (google),
si queremos hacer un click en la página de Rocketbot (pestaña 2), por ejemplo al botón Descargar, obtendremos un error como este, donde nos indica que no se encuentra el elemento.
Debemos entonces primero cambiarnos de ventana y una vez quede en foco ya podremos realizar el click. Podemos cambiarnos indicando el handle o una de las siguientes opciones las cuales indican la posición de las pestañas abiertas:
Documentación de Rocketbot Studio 42
Secuencia:
Buenas prácticas
Cada vez que nos cambiamos a otra ventana debemos utilizar el comandoEsperar por Objetocon su respectivo IF de validación, ya que estamos ingresando a otra página y debemos asegurarnos de que cargó correctamente.
Cambiar de navegador
Nos permite cambiarnos a otro navegador abierto con Rocketbot, para poder utilizarlo, cuando abrimos el navegador debemos indicar un identificador en la pestaña “Extra”.
Luego para poder dejar el otro navegador en foco y poder controlarlo, debemos indicar el identificador en el comando:
Documentación de Rocketbot Studio 44
Maximizar
Nos permite maximizar la ventana del navegador abierto por Rocketbot.
No contiene ninguna opción, solo se debe agregar:
Minimizar
Nos permite minimizar la ventana del navegador abierto por Rocketbot.
No contiene ninguna opción, solo se debe agregar:
Documentación de Rocketbot Studio 46
Esperar Por Objeto
Este comando permite esperar por un elemento en la web, dándole segundos máximos de espera hasta que nos retorna una respuesta (True o False, si lo encontró o no respectivamente). Se debe utilizar siempre que abrimos el navegador para confirmar si la página realmente cargó, también cuando clickeamos algún enlace o botón y nos abre otra pestaña, en general siempre que “cambiemos” de página, para así validar que cargó y los elementos ya existen.
Opciones:
● Dato a buscar: Valor del identificador del elemento.
● Tipo de dato: Tipo de identificador del elemento.
● Esperar Antes: Cantidad de segundos antes de que el comando “Esperar por Objeto” se ejecute. Es una espera fija, la cantidad de segundos que definamos se respetarán si o si, por lo cual se recomienda que sean tiempos bajos, ojalá no más de 2-5 segundos.
● Acción Esperar máx: Cantidad de segundos máxima que esperará el elemento.
Es una espera variable, si ingresamos 10 segundos, no significa que los esperará si o si, sino que como máximo esperará esa cantidad, si nuestro elemento aparece antes en la página, entonces obtendremos antes nuestra respuesta y se continuará con el siguiente comando, en cambio, si nuestro elemento no aparece, estará consultando hasta que se cumplan los 10 segundos y luego nos retornará un False en nuestra variable.
● Esperar Después: Cantidad de segundos que esperará luego de que se ejecute el comando “Esperar por Objeto” y continúe con el siguiente. Es una espera fija, la cantidad de segundos que definamos se respetarán si o si, por lo cual se recomienda que sean tiempos bajos, ojalá no más de 2-5 segundos.
● Asignar resultado a variable: Variable donde retornaremos el valor de si encontró o no el elemento dentro de los segundos asignados (True o False).
En este caso se está esperando 10 segundos a que aparezca el input de Google para realizar una búsqueda.
Buenas prácticas
Esperar Antes y Esperar Después: Son tiempos fijos, y son campos opcionales, en caso de utilizarlos, se deben indicar tiempos bajos (ej: 2-5 segundos), ya que utilizar esperas fijas no es buena práctica.
Acción Esperar máx: Es un tiempo variable, y es un campo obligatorio, siempre debe ir un valor ya que sino se indica, el comando no estará cumpliendo su función, como es un tiempo variable y no fijo, a diferencia de los dos inputs indicados arriba, el tiempo indicado debe ser más amplio.
Siempre que utilizamos Esperar por Objeto al inicio de nuestro flujo, se debe utilizar el comando IF del menú lógica, ya que tendremos una respuesta (True o False) en nuestra variable, en este ejemplo, llamada {wait}, con esa respuesta debemos tomar una decisión, qué hacer si es True (seguir el flujo normal) o qué hacer si es False (arrojar excepción, escribir en un log, informar por correo, etc.)
La secuencia sería la siguiente:
● Abrir la página de google.
● Esperar 10 segundos máximo a que el input de búsqueda cargue en la página.
● Tomar una decisión con el IF
○ True: Clickear el input de búsqueda, enviar el texto a buscar y realizar un Enter.
○ False: Cerrar el navegador y detener el robot.
Documentación de Rocketbot Studio 48
Sistema
Esperar
Hace esperar al sistema por N segundos y luego sigue ejecutando los comandos.
Utilizado para casos especiales, no se recomienda utilizar esperas fijas ya que solo aumentarán el tiempo de ejecución del robot, para Web se debe utilizar Esperar por Objeto y para Desktop con Virtualización se debe utilizar “Esperar por Imagen”
Documentación de Rocketbot Studio 50
Asignar Variable
Este comando nos sirve para muchas cosas, entre ellas asignar un valor a una variable, modificar una variable, ejecutarmétodos de String de Python, ejecutar acciones con librerías internas de Rocketbot, etc.
Ejemplo:
Podemos utilizar la librería interna datetime y formatear la fecha actual, de esta forma:
Quedando así:
Último estado.
Con este comando podemos obtener el estado del último comando ejecutado.
Ejemplo:
Continuando con el ejemplo del comando anterior, al ejecutar la instrucción para obtener la fecha del día, agregaremos el comando “Último Estado” e indicaremos una variable donde guardar la información, en este caso llamada {res}
Documentación de Rocketbot Studio 52
Ingreso de Información Web
Abre una ventana parametrizable, por ejemplo para realizar un login y luego ejecutar el robot.
La URL debe ser tipo file y tiene que ser la ruta completa donde se encuentra el index.
Esto nos abrirá la ventana de esta forma, para que le ingresemos información.
Ejecutar aplicación.
Podemos abrir cualquier aplicación que se encuentre en el PC mediante su ejecutable, en este ejemplo estamos abriendo Notepad:
Documentación de Rocketbot Studio 54
Scripts
Ejecutar archivo Python
Ejecuta un archivo Python con las librerías internas que tiene Rocketbot, podemos utilizar las variables de Rocketbot y setearlas con información desde el script.
Ejemplo
En nuestro script obtendremos la variable {fecha} de Rocketbot, le restaremos 1 día y se la enviaremos a la variable {result}:
Archivo python:
Podemos utilizar las variables de Rocketbot llamándolas entre llaves, tal cual las utilizamos en los robots.
Para devolver un valor desde el script hacia el robot, debemos utilizar SetVar() donde primero indicamos entre comillas el nombre de la variable en Rocketbot y luego el valor que le queremos asignar.
Execute Python
Con este comando podemos ejecutar código python con las librerías básicas incluidas.
Ejemplo:
Utilizaremos la librería random para obtener un número aleatorio y guardarlo en una variable a través de SetVar().
Resultado:
Documentación de Rocketbot Studio 56
Ejecutar JSON Rocketbot
Ejecuta un robot de Rocketbot exportado a JSON. Al descargar un robot mediante la pestaña Robot->Guardar en archivo Json, este se bajará con extensión .json, y podríamos ejecutar el robot indicando la ruta donde se encuentra ubicado el archivo.
Sin embargo este comando está deprecado y no es óptimo utilizarlo.
Buena práctica
Para ejecutar otro robot como un bot hijo, se debe utilizar siempre el comandoEjecuta otro script Rocketbot, quien lo llama directamente desde la BD.
Ejecuta otro script RocketBot
Este comando nos sirve para llamar un robot desde otro, donde podemos compartir variables y dividir tareas entre cada robot.
Nos mostrará todos los robot que tenemos en nuestra base de datos para ejecutarlos.
Documentación de Rocketbot Studio 58
Buenas prácticas
Como buena práctica siempre es recomendado seccionar el flujo (proceso), en varios mini-bots. Esto facilita el poder modificar el proceso, revisar dónde está fallando, corregirlo y reutilizar comandos.
Ejemplo:
Un robot principal (padre), que abra un navegador con una url, luego un mini robot (hijo_descarga), que descargue un archivo y otro mini bot (hijo_mail) que tome el archivo y lo envíe por mail.
Robot “padre”:
1. Abre el navegador con una URL específica.
2. Maximiza la ventana.
3. Ejecuta un robot hijo (hijo_descarga).
4. Cierra el navegador.
Variables:
N/A
Documentación de Rocketbot Studio 60
Robot “hijo_descarga”:
1. Cuenta la cantidad de archivos existentes en la carpeta de Descarga.
2. Realiza click en el botón Descargar de la página abierta.
3. Espera hasta que la descarga haya finalizado.
4. Ejecuta un robot hijo (hijo_mail)
Variables:
Robot “hijo_mail”:
1. Configura un correo Gmail.
2. Envía un correo adjuntando el archivo descargado en el robot anterior (utilizando la variable {path} del robot hijo_descarga).
Variables:
Documentación de Rocketbot Studio 62
Retornar Información
Este comando es útil para enviar información a un robot Padre. El robot principal debe llamar al robot hijo con la instrucción rocket.start().
Ejemplo:
Tenemos un robot padre, el cual contiene una variable {res} que será donde recibiremos la respuesta desde el robot llamado Retorna_Info
En el robot padre ejecutaremos el otro robot mediante el comando Asignar Variable con la instrucción rocket.start() e indicaremos la variable donde guardaremos la información obtenida, en este caso {res}
En el robot hijo (Retorna_Info) tendremos el comando Retornar Información con los siguientes datos de ejemplo:
Podemos enviar cualquier tipo de información, string, booleanos, diccionarios, listas, etc.
Cuando el padre ejecute al hijo, recibirá la información en su variable {res}
Documentación de Rocketbot Studio 64
Detener este robot
Detiene la ejecución del robot actual y continúa con los siguientes, para utilizarlo solo se agrega el comando.
Detener todo y salir
Este comando detiene el Script en curso y sus padres.
Documentación de Rocketbot Studio 66
Desktop
Mover Mouse
Mueve el mouse hasta la posición indicada por coordenadas X e Y (ej: 1045,207).
Para obtener las coordenadas podemos utilizar el comando Obtener coordenadas del mouse.
Buena práctica
Este tipo de instrucciones no se deben utilizar en procesos Web, son para utilizarlas en automatizaciones de aplicaciones de escritorio, sin embargo si requerimos mover el mouse para realizar algún click, es mejor utilizar el comandoClick en Imagen, el cual busca la imagen en toda la pantalla, por lo tanto si el objeto cambia de posición lo
encontrará igualmente, no así Mover Mouse, que solamente irá a una posición específica.
Mouse Srcoll
Este comando realiza Scroll con el Mouse hasta X clicks.
Documentación de Rocketbot Studio 68
Obtener Coordenadas del Mouse
Obtiene las coordenadas de la posición donde se encuentra el cursor y las guarda en una variable.
Segundos de espera: segundos que esperará antes de obtener las coordenadas, lo que nos permite mover el cursor a la posición deseada.
Asignar resultado a variable: Variable donde guardaremos las coordenadas obtenidas.
Mouse Click
Hace click en donde está posicionado el Mouse, si queremos que lo realice en un lugar específico, debemos utilizar primero el comando Mover Mouse para indicarle la posición y una vez esté donde lo queremos, utilizamos Mouse Click.
Podemos utilizar:
● left -> para hacer click con el botón izquierdo
● right -> para hacer click con el botón derecho
● middle -> para hacer click con el botón central del Mouse
Buena práctica
Este tipo de instrucciones no se deben utilizar en procesos Web, son para utilizarlas en automatizaciones de aplicaciones de escritorio, sin embargo si requerimos realizar algún click, es mejor utilizar el comandoClick en Imagen, el cual busca la imagen en toda la pantalla, por lo tanto si el objeto cambia de posición lo encontrará igualmente, no así Mouse Click, que solamente lo hará en una posición específica.
Documentación de Rocketbot Studio 70
Alerta
Este comando muestra un cartel de mensaje y pausará la ejecución del robot hasta que se de click en el botón Aceptar.
También podemos imprimir los valores de nuestras variables en tiempo de ejecución, esto nos sirve para validar si nos está trayendo la información correcta o no.
Nos mostrará la ventana de alerta con el valor que tiene la variable que ingresamos:
Notificación.
Genera una notificación de sistema, a diferencia del comando Alerta, esta Notificación se mostrará por unos segundos y luego desaparecerá.
Se le puede pasar una imágen para que la muestre como ícono.
Ejemplo:
Documentación de Rocketbot Studio 72
Captura de pantalla.
Obtiene una captura de pantalla de toda la pantalla.
Sólo debemos pasar la ruta donde queremos guardar la captura, indicando el nombre y la extensión (.png o .jpg).
Enviar Tecla
Al igual que el comando Enviar Texto Web éste sólo acepta una opción, si se escribe un texto (o una variable con texto) no se puede agregar una tecla especial, o no funcionará.
Al revés lo mismo, si queremos enviar una tecla especial, no podemos también pasar un texto.
Buenas prácticas
No utilizar este comando en automatizaciones Web, en ese caso se debe utilizar Enviar Texto Web, ni en aplicaciones Office (Excel, Word, Powerpoint) para ellas se deben utilizar los menús o módulos respectivos.
Documentación de Rocketbot Studio 74
En el input de Texto, podemos concatenar un texto y una tecla, de la siguiente forma:
Si se necesita repetir la misma tecla varias veces, también se puede indicar de esta forma:
Lógica
IF
La sentencia if se utiliza para ejecutar un bloque de código si, y sólo si, se cumple una determinada condición. Por lo tanto, IF es usado para la toma de decisiones.
Buenas prácticas
Nunca se debe dejar un IF vacío y poner solo la lógica en el Else, esto no es permitido en Python por lo tanto producirá fallos en nuestro robot.
Ejemplo:
Documentación de Rocketbot Studio 76
La forma correcta es la siguiente, donde el Else si puede ir vacío:
While
Con la sentencia While podemos ejecutar un ciclo mientras se cumpla una condición, lo cual nos permite ejecutar instrucciones múltiples veces.
Buenas prácticas
La condición debe estar relacionada con una variable que tenga un cambio en la condición para que en algún momento esta se cumpla y se termine el ciclo, sinó se corre el riesgo de generar un bucle infinito.
Documentación de Rocketbot Studio 78
Break
Este es un comando que no tiene ningún parámetro. Se utiliza dentro de los Ciclos For o While, el comando Break termina el ciclo que la contiene. El flujo del Robot sigue el comando inmediatamente después del cuerpo del ciclo. Si la instrucción break está dentro de un ciclo anidado (ciclo dentro de otro ciclo), la declaración break terminará el ciclo más interno.
For
Un bucle for es un bucle que repite el bloque de instrucciones un número predeterminado de veces, podemos indicar un número con la opción range(), o si indicamos una lista, se ejecutará tantas veces como elementos contenga.
En el selector Variables, debemos indicar una variable donde irá quedando cada elemento que contenga el elemento iterable.
Podemos encontrar más información respecto a los ciclos en ladocumentación de Python.
Documentación de Rocketbot Studio 80
Try Catch
Este es un comando que se utiliza para capturar errores, dentro del bloque Try se ubica todo el código que pueda llegar a generar una excepción, el bloque Catch se encarga de capturar la excepción y ejecutar las instrucciones que contenga.
A la primera excepción que encuentre en el bloque Try, no continuará con las demás instrucciones y ejecutará inmediatamente lo que contenga el bloque Catch.
Ejemplo:
Archivos
Guardar texto en archivo
Este comando nos sirve para pasar información a un archivo, se puede utilizar por ejemplo para crear nuestro propio log e ir almacenando los distintos pasos e información del robot.
● Ruta del archivo: Debemos indicar la ruta de nuestro archivo, si no existe se creará.
● Modo:
○ Agregar: Irá adicionando información al archivo, por ejemplo en el caso de crear un archivo log.
○ Sobreescribir: Irá pisando la información existente en el archivo.
● Agregar salto de línea: Podemos seleccionarlo si queremos incluir un salto de línea antes del texto enviado.
● Texto: Podemos indicar texto fijo o pasar una variable de Rocketbot.
Documentación de Rocketbot Studio 82
Control de archivos
Mover o renombrar archivo
Este comando nos permite mover o renombrar un archivo desde una posición a otra, debemos ingresar la ruta y nombre del archivo actual (Desde) y la ruta y nombre hacia donde lo queremos mover (Hacia), también podemos retornar el resultado a una variable donde obtendremos True en caso de que la acción se haya realizado de forma exitosa, o False en caso contrario.
Copiar Archivo
Este comando nos permite copiar un archivo desde una posición a otra, debemos ingresar la ruta y nombre del archivo original (Desde) y la ruta y nombre hacia donde lo queremos mover (Hacia), a diferencia del comando anterior, en este caso el archivo original se conservará tanto en la ruta de inicio como en la ruta final, también podemos retornar el resultado a una variable donde obtendremos True en caso de que la acción se haya realizado de forma exitosa, o False en caso contrario.
Documentación de Rocketbot Studio 84
Borrar archivo
Este comando nos permite borrar un archivo de forma definitiva, no llega a la papelera.
Debemos indicar la ruta y nombre del archivo que queremos borrar, en el input Nombre de archivo y además podemos asignar el resultado a una variable. En caso que la operación sea exitosa el resultado será None caso contrario será False.
Listar archivos
Con este comando podemos obtener una lista con todos los archivos contenidos en una carpeta.
Documentación de Rocketbot Studio 86
Listar carpetas
Con este comando podemos obtener una lista con todas las carpetas contenidas en una carpeta.
Enviar a papelera
Con este comando podemos eliminar un archivo y enviarlo directamente a la papelera, además podemos asignar el resultado a una variable. En caso que la operación sea exitosa el resultado será None caso contrario será False.
**En el caso de trabajar en Windows la ruta del Archivo en este comando se debe indicar con barra invertida, por ejemplo C:\Users\user\file.txt
Documentación de Rocketbot Studio 88
Compresión de archivos
Comprimir un archivo o una carpeta en un ZIP
Este comando nos permite comprimir un archivo o carpeta a .zip, debemos indicar la ruta de lo que queremos comprimir y la ruta y nombre del archivo zip de destino, además podemos retornar el resultado a una variable, si la acción se realizó correctamente obtendremos un True, caso contrario obtendremos un False.
Descomprimir ZIP
La funcionalidad de este comando es descomprimir un archivo ZIP, para esto debemos indicar la ruta y nombre del archivo a descomprimir y la ruta de destino del archivo ya descomprimido. Adicionalmente podemos guardar el resultado de la ejecución en una variable, si la acción se realizó correctamente obtendremos un True, caso contrario obtendremos un False.
Documentación de Rocketbot Studio 90
Extraer texto de PDF
Este comando nos permite extraer el texto de un PDF digital (No pdf tipo imagen, no escaneado) y almacenar el resultado en una variable, también podemos indicar el número específico de página que queremos extraer, si no se indica, por defecto se leerán todas.
Convertir imagen a PDF
Podemos convertir una imagen a PDF indicando la ruta de donde se encuentra la imagen, y en PDF destino, la ruta donde se creará el Archivo PDF resultante, también le podemos indicar el alto y ancho de la imagen, si se deja vacío se colocarán valores por defecto.
Documentación de Rocketbot Studio 92
Agregar imagen a PDF
Nos permite adicionar una imagen a un PDF, por ejemplo como un sello de agua o algún código QR, debemos indicar la ruta y nombre de la imagen a agregar y la ruta y nombre del PDF al cual la queremos adicionar, también le podemos indicar el alto y ancho que de la imagen y la posición donde la queremos agregar indicando coordenadas X e Y, si se dejan vacío se colocarán valores por defecto.
XLSX
Si trabajamos con este menú no es necesario tener instalado Microsoft Excel, ya que no trabaja con la aplicación, abre o crea un archivo en segundo plano y no veremos que este se abra, todo pasará por debajo.
Nuevo xlsx
Nos permite crear un nuevo archivo XLSX en memoria, podemos indicar un Identificador (puede ser un número, letra o palabra) en el caso de que necesitemos crear y trabaja con más de un archivo xlsx abierto por Rocketbot, luego si necesitamos ir moviéndonos entre uno u otro, lo tendremos que realizar a través de su ID, también podemos indicar una variable, donde obtendremos un True si se puedo crear un nuevo archivo o False en caso contrario.
Documentación de Rocketbot Studio 94
Buenas prácticas
Retornar a una variable para validar si se pudo abrir de forma correcta o no y con eso tomar una decisión a través del comando IF.
Ejemplo:
Abrir xlsx
Nos permite abrir un archivo XLSX en memoria, debemos indicar la ruta donde se encuentra, y al igual que el comando anterior también podemos indicar un Identificador en el caso que necesitemos abrir más de un archivo, además de la variable donde obtendremos un True si se pudo abrir de forma correcta, o un False en caso contrario.
Buenas prácticas
Retornar a una variable para validar si se pudo abrir de forma correcta o no y con eso tomar una decisión a través del comando IF.
Ejemplo:
Documentación de Rocketbot Studio 96
Guardar xlsx
Nos permite guardar el archivo XLSX que está en foco indicando la ruta y nombre, si estamos trabajando con más de uno, primero debemos dejar activo el que queremos guardar, con el comandoCambiar de Archivo
Obtener Hojas
Obtendremos una lista con los nombres de las hojas contenidas en el archivo, debemos indicar una variable donde almacenar la información.
Documentación de Rocketbot Studio 98
Cambiar de Hoja
Por defecto se trabaja con la primera hoja del archivo, si necesitamos trabajar con otra, debemos cambiarnos de Hoja indicando su nombre.
Cambiar de Archivo
Podemos cambiar de archivo dejando activo otro que haya sido abierto por Rocketbot, para eso debemos indicar el ID agregado mediante el comandoNuevo xlsxoAbrir xlsx
Documentación de Rocketbot Studio 100
Contar Filas
Este comando nos permite obtener la cantidad total de filas con información del archivo xlsx. Por defecto contará las filas de la primera hoja, si necesitamos trabajar con otra, primero debemos cambiarnos con el comandoCambiar de Hoja.
Buenas prácticas
Siempre luego de Abrir un archivo xlsx, debemos contar la cantidad de filas que tiene, ya que en el caso de que la cantidad sea variable y en otra ocasión el archivo tenga más o menos filas, es decir, en otra ocasión el archivo tenga más o menos filas tendríamos que estar modificando el comandoObtener celdade forma manual, lo cual no es óptimo, por lo tanto siempre se debe trabajar con una variable que contenga la cantidad de filas.
Contar Columnas
Este comando nos permite obtener la cantidad total de columnas con información del archivo xlsx. Por defecto contará las columnas de la primera hoja, si necesitamos trabajar con otra, primero debemos cambiarnos con el comandoCambiar de Hoja.
Documentación de Rocketbot Studio 102
Obtener celda
Este comando nos permite obtener una celda o un rango de celdas y almacenar la información en una variable, al obtener un rango nos devolverá una lista o una lista de listas.
Buenas prácticas
Cuando trabajamos con un rango (ej: A1:F3) no debemos pasar un número fijo al final de este, sino, debemos utilizar el comandoContar Filasy asignar el valor a una variable, esta variable es la que se debe pasar al final del rango, ej: A1:F{filas}, esto en el caso de que la cantidad de datos en el Excel sea variable, para no estar modificando el comando cada vez que la cantidad de filas cambia, se debe utilizar esta buena práctica.
Escribir Celda
Este comando nos permite escribir un texto en una celda específica o un rango si definimos una matriz en el input Texto.
Ejemplo:
Para escribir en un rango debemos en Celda indicar la celda de inicio y en Texto lo siguiente: [["Titulo1", "Titulo2"], ["valor1", "valor2"]]
Quedará así:
Documentación de Rocketbot Studio 104
Virtualización
Este menú es nuestra última opción para realizar una automatización, el orden de prioridad sería:
1. Comandos nativos y/o módulos para Web, Office, Email, Base de datos, SAP, FTP, Archivos, etc.
2. Si necesitamos controlar una aplicación de escritorio, debemos primero intentar con los grabadores, Desktop Recorder o Java Recorder, si ninguno de los dos nos sirve, entonces la última opción será Virtualización ya que se deben considerar ciertas cosas como por ejemplo:
a. La resolución del PC afectará al bot, por ejemplo, si se desarrolla un bot en X computador y luego se pasa al computador del cliente o donde se
ejecutará finalmente, lo más probable es que no funcione correctamente, ya que se tienen resoluciones y componentes distintos.
b. Las imágenes siempre deben estar enfrente para que el bot las reconozca, esto quiere decir que una persona no puede utilizar el computador al mismo tiempo que el robot, por lo tanto no se podrán realizar ejecuciones en paralelo.
c. La pantalla no se puede bloquear, por lo que eso se debe desactivar o realizar ajustes para que no suceda.
Click en Imagen
Realiza un click a la imagen que indicamos mediante una captura de pantalla.
Buscará la imagen en toda la pantalla, por lo que si cambia de posición la encontrará igualmente.
Al presionar “Captura de Pantalla”, aparecerá una ventana con dos opciones:
1. Tomar captura: Saca la captura inmediatamente.
2. Captura en 5 seg.: Espera 5 segundos y luego saca la captura, esto nos permite movernos o dejar la aplicación o elemento en foco.
Documentación de Rocketbot Studio 106
Al sacar la captura, nos mostrará la imagen y una selección, la cual podemos ampliar o achicar para seleccionar el elemento deseado.
Debemos acotar la selección sólo al elemento donde queremos clickear, en este ejemplo debemos realizar un click en el input de Username, pero vemos que todos los inputs son iguales, por lo tanto debemos escoger una referencia distinta al foco, la referencia en este caso será el label Username, y el foco (donde hace el click finalmente) será el input.
Primero seleccionamos el label Username y luego clickeamos en Sel. referencia, de esta forma veremos la imagen debajo del texto Imagen de referencia
Ahora seleccionamos el input donde queremos que realice el click y clickeamos Sel. foco, de esta forma veremos la imagen debajo del texto Hacer click
Finalmente debemos elegir las opciones de la derecha, las cuales son:
● Posición: Posición donde se dará click en la imagen (Center, Top, Bottom, Right, etc.)
● Exactitud: Generalmente utilizamos 0.8 o 0.7 que corresponde al 80% o 70% de exactitud en cuanto a la imagen.
● Click en botón: indicamos qué tipo de click realizaremos (Izquierdo, doble izquierdo, derecho, medio, etc.)
● Escala de grises: Podemos elegir si queremos que pase la imagen a gris o color y luego busque, por defecto es en Escala de grises y es lo recomendable.
● Tiempo de busqueda: Podemos agregar un tiempo de búsqueda variable, esperar N segundos hasta que aparezca la imagen y luego le de click.
Documentación de Rocketbot Studio 108
Buscar por Imagen
Busca una imagen de referencia en la pantalla y almacena el resultado en una variable retornando True si la encontró dentro del tiempo definido o False en caso contrario.
Buenas prácticas
Al igual que el comandoEsperar por Objetopara la parte web, en Virtualización debemos utilizar este comando para asegurarnos de que el elemento con el cual
queremos trabajar, existe, y luego tomar una decisión con un IF, si nos retorna True, osea que sí lo encontró, entonces dentro de ese bloque realizamos nuestro flujo, si nos retorna False, osea que no lo encontró entonces debemos decidir qué hacer.
OCR a imagen
Busca una imagen y transcribe el texto guardándolo en una variable.
Considerar que el OCR no es 100% fiable, por lo que podría traer un texto erróneo, por ejemplo confundir un 0 con una o.
Documentación de Rocketbot Studio 110
Esperar por imagen
Espera una imagen de referencia en la pantalla y almacena en una variable si está visible o no.
Realiza la misma función que el comandoBuscar por imagen
Buenas prácticas
Al igual que el comandoEsperar por Objetopara la parte web, en Virtualización debemos utilizar este comando para asegurarnos de que el elemento con el cual
queremos trabajar, existe, y luego tomar una decisión con un IF, si nos retorna True, osea que sí lo encontró, entonces dentro de ese bloque realizamos nuestro flujo, si nos retorna False, osea que no lo encontró entonces debemos decidir qué hacer.
Tips
Windows
Estos son algunos casos donde los comandos de imagen no funcionen correctamente, por lo tanto se debe revisar resolución o ejecutar Rocketbot como administrador.
1. Si no realiza los click en las imágenes a. Instalar lo siguiente:
.NET Framework:Download .NET Framework | Free official downloads Visual C++:Descargas más recientes compatibles de Visual C++
b. Revisar resolución:
Si la configuración de pantalla está aumentada, dejarla al 100% y probar.
Documentación de Rocketbot Studio 112
Importante: Si se realizan cambios de escala, puede ser necesario cerrar sesión y volver a abrir para que los cambios se guarden.
2. Si realiza click en ciertas imágenes pero no en todas.
Por ejemplo realiza click en elementos del escritorio o barra de tareas pero no en una aplicación de escritorio interna, además al intentar abrir la aplicación con Rocketbot aparece lo siguiente:
Ejecutar Rocketbot como administrador y probar.
3. Si realiza click en otra parte
Especificar alguna referencia, por ejemplo si tenemos dos elementos iguales, debemos marcar como referencia algo que no se repita y como foco el lugar donde realizar el click.
Por ejemplo acá seleccionamos como referencia el label Username el cual no se repite, y el foco es el input, lo que hará será calcular las coordenadas desde la imagen de
referencia hasta la indicada en foco y hará click a lo que se encuentre en esa posición.
Documentación de Rocketbot Studio 114
Si sigue realizando el click en otra parte, y se está trabajando desde un escritorio remoto, debemos cambiar la resolución antes de ingresar al servidor.
Por ejemplo, el foco (donde hacer el click) es el ícono de Rocketbot, pero el click lo realiza
en el punto rojo:
Configuración:
4. Si sigue sin encontrar las imágenes y es un Windows Enterprise (win 7 o win 10), revisar si está la siguiente .dll sino, agregarla:
DLL:api-ms-win-downlevel-shlwapi-l1-1-0.dll
5. Virtualización en Windows server 2012 mediante rdp
En caso que las funciones de virtualización para “click en imagen” o “esperar por imagen”
no funcionara correctamente podemos revisar lo siguiente:
Que no esté habilitada la opción de cambiar el nivel de escala:
Documentación de Rocketbot Studio 116
Adicional a esto verificar que esté instalada las características dentro de “Interfaz de usuario e Infraestructura” en especial Experiencia de escritorio:
macOS
Permiso denegado al hacer OCR
Solución:
1. Abrir el terminal e ir a la ruta indicada en el error, ej:
cd /Users/usuario/Desktop/Rocketbot/drivers/mac/tesseract 2. Escribir el comando ls-l para visualizar los permisos.
3. Veremos que en este caso no tiene permisos de ejecución:
4. Le damos los permisos con uno de los siguiente comandos:
- ejecución para todos los usuarios: chmod 777 tesseract - ejecución sólo para el owner: chmod 744 tesseract
Documentación de Rocketbot Studio 118
- Volvemos a ejecutar un ls -l para revisar los cambios:
- Ahora ejecutamos nuevamente el comando de OCR
MySQL
Configurar conexión Mysql
Para conectarnos con MySQL, debemos indicar la URL del servidor, puerto, nombre de la BD, usuario y contraseña, además podemos retornar el resultado a una variable donde obtendremos un True si la conexión fue exitosa, o un False, en caso contrario y podemos utilizar un ID en caso de que nos conectemos a varias Bases de datos MySQL.
Buenas prácticas
Siempre agregar una variable para retornar el status de conexión y con eso validar a través del comando IF para tomar una decisión.
Documentación de Rocketbot Studio 120
Consulta MySQL
Realiza una consulta MySQL (Select, insert, delete, update), el resultado lo retornamos en una variable para posteriormente trabajar con la información.
Buenas prácticas
En el ambiente de Desarrollo de Rocketbot las consultas se deben realizar con límites y no traer todos los registros, ya que si son demasiados, Rocketbot puede detenerse por consumo de memoria, esto para realizar pruebas, ya en el ambiente de producción igualmente es recomendable seccionar la cantidad de registros consultados.
SMTP - IMAP
Configurar servidor
Configura un servidor SMTP e IMAP con SSL para enviar y recibir correo. Al abrir el comando, por defecto vienen los servidores y puertos de gmail, debemos añadir el correo y su contraseña.
Buenas prácticas Variables:
Es buena práctica, utilizar variables tanto en el nombre de usuario como en el caso de la contraseña y no escribirlos directamente en el comando. También debemos recordar siempre borrar las credenciales si por alguna razón tuvieras que compartir el robot.
Conexión:
Siempre se debe validar la correcta conexión de la cuenta de correo, en el caso de los módulos, éstos permiten validar la conexión retornando el resultado a una variable, por lo tanto esto se debe validar con un IF.
En el caso de este comando, no tiene opción para retornar a una variable y revisar si las credenciales conectaron de forma correcta o no, pero en este caso se puede utilizar el comandoÚltimo Estadoy validar esa respuesta.
Documentación de Rocketbot Studio 122
Una vez que ya no utilizaremos nada respecto a correos, debemos cerrar la conexión con el comando “Cerrar Conexión” del módulo que estemos utilizando.
Módulos:
Se recomienda utilizar los módulos específicos para los distintos tipos de servidores de correo, pero si se requiere utilizar uno corporativo o que por el momento no tenga su respectivo módulo, es óptimo utilizar este comando para configurar y complementarlo con el módulo Email Advanced en vez de utilizar los comandos nativos que son más limitados.
Enviar Email SMTP
Con este comando ingresamos la dirección de correo a quién queremos enviar el mail (sólo acepta un destinatario), el asunto y el mensaje, además podemos adjuntar un archivo indicando la ruta.
Para enviar un mail, debemos configurar previamente el servidor SMTP a utilizar, con el comandoConfigurar Servidor.
Documentación de Rocketbot Studio 124
Listar todos los email IMAP
Este comando nos permite obtener una lista de todos los email que coincidan con el filtro2indicado, debemos retornar el resultado a una variable para trabajar con la información.
Buenas prácticas
Una vez que obtenemos el resultado de listar email es necesario decodificar los datos.
La decodificación se realiza con el comando Asignar Variable y la función de Python decode().
Ejemplo:
Quedará de la siguiente forma:
Si queremos realizar el decode para toda la lista obtenida, debemos recorrerla con un For.
Documentación de Rocketbot Studio 126
Listar email nuevos IMAP
Este comando nos permite obtener una lista de todos los email que coincidan con el filtro3indicado, la diferencia con el comando anterior es que este nos traerá los id’s sólo de los correos que no hayan sido leídos aún. Debemos retornar el resultado a una variable para trabajar con la información.
Al igual que el comando anterior, también debemos decodificar los id’s entregados.
Leer email por ID IMAP
Este comando nos permite leer la información del correo, debemos indicar el ID del email obtenido del comandoListar todos los email IMAPoListar email nuevos IMAP, al asignar a una variable obtendremos información como por ejemplo el mensaje, asunto, quién lo envió y si tiene archivos adjuntos o no, además podemos indicar una ruta y en caso de que traiga adjuntos, éstos serán descargados en la carpeta indicada.
Documentación de Rocketbot Studio 128
Conexión HTTP
Conectar url GET
Este comando nos permite realizar una solicitud de tipo GET y asignar los datos a una variable.
Ejemplo:
Conectar URL avanzado
Con este comando podemos ejecutar solicitudes HTTP del tipo Get, Post, Put y Delete. A diferencia de la conexión URL GET, en este comando podemos enviar múltiples variables.
El resultado de la consulta quedará guardado en Asignar resultado a variable. Podemos enviar consultas con cabeceras, donde ingresamos por ejemplo una Key para conectar a una Api, seleccionar el formato del dato a enviar, ya sea como Formulario, Json o Texto plano. En la sección Ruta de Archivo ingresamos el Path de un archivo que podría ir adjunto, por ejemplo, en una solicitud del tipo Post. En este comando los datos obligatorios son URL de Servidor y Método de solicitud
Ejemplo:
Realizaremos un Post, pasando un XML para convertir de Fahrenheit a Celsius.
En este caso debemos además de agregar la URL y el método de solicitud, indicar en cabeceras que es un tipo de texto XML.
*Si queremos utilizar una variable en las cabeceras, debemos “escapar” las comillas dobles para que quede de esta forma:
Se puede realizar desde Asignar Variable con la siguiente instrucción:
"""{header}""".replace('"', '\\"')
Documentación de Rocketbot Studio 130
En la pestaña Contenido Plano, realizaremos la llamada
Obteniendo lo siguiente:
Integración con Aplicaciones
Excel
Si trabajamos con este menú si es necesario tener instalado Microsoft Excel, ya que trabaja con la aplicación, abre o crea un archivo en primer plano y veremos que este se abre.
Nuevo Libro
Nos permite crear un nuevo archivo Excel, podemos indicar un Identificador (puede ser un número, letra o palabra) en el caso de que necesitemos crear y/o trabaja con más de un archivo Excel abierto por Rocketbot, luego si necesitamos ir moviéndonos entre uno u otro, lo tendremos que realizar a través de su ID, también podemos indicar una variable, donde obtendremos un True si se puedo crear un nuevo Excel o False en caso contrario.
Documentación de Rocketbot Studio 132
Buenas prácticas
Retornar a una variable para validar si se pudo abrir de forma correcta o no y con eso tomar una decisión a través del comando IF.
Ejemplo: