Solución de Problemas: Public (Público) 2024-02-09
Solución de Problemas: Public (Público) 2024-02-09
2024-02-09
PUBLIC (PÚBLICO)
Solución de problemas
Le damos la bienvenida al tema Solución de problemas y soporte. En este tema aparecen varias notas de la
base de conocimientos que están disponibles en [Link] o bien directamente definiendo el
componente.
Si tiene problemas al utilizar SAP Intelligent RPA, le sugerimos que presente una solicitud a través de SAP
Support Portal. Para obtener más información sobre cómo crear un incidente nuevo, consulte Obtener
soporte.
Por componente
• ¿Por qué no veo el producto SAP Intelligent RPA en SAP Marketplace? 2824501
• Verificaciones de configuración de los navegadores web - 2796986
• ¿Dónde puedo encontrar contenido preconfigurado para S/4HANA? - El contenido está disponible en
[Link]. Consulte la nota 2788986 para consultar la estrategia del release.
Instalación y configuración
Desktop Agent 3 cuenta con un modo de soporte. Puede utilizar el modo de soporte para guardar traces o
instalar una versión específica del agente.
Requisitos previos
Procedimiento
Resultados
Nota
Cuando el modo de soporte está desactivado, Activar las actualizaciones automáticas no es visible.
• Los traces funcionales se registran por job, se registran los traces técnicos al inicio y los traces se cifran y
cargan en el arrendatario.
En el agente de escritorio, puede acceder a las opciones de Tracer en Opciones, mientras el modo de
soporte está activado.
Requisitos previos
Debe haber activado el modo de soporte para poder exportar métricas de estado. Para obtener más
información, consulte Activar el modo de soporte [página 4].
Contexto
Puede exportar métricas relacionadas con su agente y enviarlas al equipo de SAP Support para que las
investigue. Una vez activado el modo de soporte, las métricas de estado se almacenan durante un máximo de
7 días.
Procedimiento
Se exporta a su PC un archivo comprimido que contiene archivos CSV de las distintas métricas. Puede enviar
este archivo a SAP Support.
En el systray de Desktop Agent se informa del estado, errores y advertencias en la pantalla "Acerca de". El
icono de advertencia (naranja) no requeriría interacción humana porque el agente volverá a intentarlo. El icono
de error (rojo) suele requerir interacción humana.
Código de ejemplo
[Link](function (ev){
if([Link]){
//Add item in systray menu.
....
}
});
Ha verificado todos los requisitos previos técnicos y configurado el navegador, pero la bandeja de sistema del
agente aparece en blanco.
Causa
Resolución
Nota
Si el bot no requiere intervención humana, no debe utilizar el equipo mientras se esté ejecutando.
Un bot puede ejecutarse en proceso de fondo; sin embargo, debe tener en cuenta la siguiente información
relativa al diseño del bot:
• No debe contener actividades de clic de ratón, actividades de doble clic ni otras funciones que requieran
interacciones con el ratón (la actividad de clic normal está funcionando);
• No debe contener ninguna actividad de pulsación;
Nota
Si desea utilizar el equipo mientras se ejecuta un bot, lo mejor es hacer algunas pruebas. De hecho, el
comportamiento del bot depende en gran medida del caso de uso.
Contexto
Cuando un Desktop Agent se ejecuta en un sistema en modo no asistido, puede suceder que se reinicie el
sistema. Es posible que desee iniciar automáticamente el agente.
Para iniciar Desktop Agent inmediatamente después de este reinicio, debe haber almacenado sus credenciales
de Windows en el archivo Desktop Agent. También debe haber marcado la casilla de verificación Iniciar
automáticamente al iniciar sesión en Windows en la bandeja del sistema Desktop Agent. Para marcar esta
opción, haga clic en el botón Más acciones y luego haga clic en Configuración.
La sesión se abre en modo no interactivo cuando el sistema se ha reiniciado. Luego, el agente se inicia
automáticamente.
Encontrará más información sobre cómo guardar credenciales de Windows para iniciar un SAP Intelligent
RPADesktop Agent en modo no asistido; consulte Establecer la contraseña de Windows en Desktop Agent.
[Link] /forget
Con este comando, el Desktop Agent deja de reiniciarse automáticamente después del reinicio.
Se producen errores de memoria saturada cuando se procesan demasiados datos a la vez o cuando una
automatización no libera memoria tras el uso. Esto puede provocar un fallo de la automatización. Siga las
recomendaciones para evitar alcanzar el límite de asignación de memoria.
Le recomendamos que:
Si el error de memoria saturada no desaparece tras seguir estas recomendaciones, intente ejecutar la tarea
que requiere un gran consumo de memoria utilizando una herramienta externa, por ejemplo, un script Python.
Están disponibles las siguientes notas de la base de conocimiento relacionadas con Desktop Studio:
• Cómo recuperar la variable (texto) de Factory - 2822776 (consulte también este tema en la guía del
desarrollador)
• Cómo recuperar la variable (credenciales) de Factory - 2822500 (consulte también este tema en la guía del
desarrollador)
• Cómo insertar una imagen en un correo electrónico - 2864114
• Cómo utilizar otra herramienta de diff y fusión - 2867241
• Cómo renombrar un proyecto - 2956757
Prácticas recomendadas
A veces, la herramienta SAP Intelligent RPA precisa que el usuario gestione aplicaciones con acciones de perfil
bajo como pueden ser clics de ratón o pulsaciones directas. En determinadas circunstancias, estas acciones
de perfil bajo pueden causar limitaciones.
Este comportamiento no se limita a una ejecución sin supervisión, ya que se puede esperar que el usuario
inicie escenarios atendidos en su equipo y los deje trabajar mientras la pantalla está bloqueada.
Contexto
El usuario confirma que un job se ha ejecutado correctamente durante las etapas de implementación y prueba:
Sin embargo, tan pronto como el agente está en una infraestructura de escritorio virtual y tiene la pantalla
bloqueada, el job deja de ejecutarse correctamente y se detiene durante algunas acciones técnicas, en plena
automatización.
Motivo
Para procesar acciones de automatización específicas como pueden ser clics de ratón y secuencias de
pulsaciones, el usuario necesita una sesión abierta que evite que la pantalla se bloquee durante la ejecución de
una automatización. Ahora bien, no es imprescindible utilizar un teclado físico o virtual.
• [Link]();
• [Link]("text");
[Link] Causas
Los siguientes temas explican las principales causas de un bloqueo de pantalla y las limitaciones de la
infraestructura de escritorio virtual.
• [Link](true)
• [Link](
• cada [Link] métodos
Para identificar este tipo de acción, compruebe que el cursor se desplace hasta la posición del elemento
cuando se llame la acción de clic.
[Link].2 Pulsaciones
• [Link]([Link])
• [Link]("Test")
• [Link]("Test")
Para verificar si la acción se puede realizar con la pantalla bloqueada o una infraestructura de escritorio virtual
desconectada, envíe la siguiente secuencia de pulsaciones:
[Link](function(ev){
[Link](“text”);
},10000);
Esta secuencia de pulsaciones creará un retraso durante el cual puede bloquear manualmente la pantalla o
desconectar la sesión.
El conector UIAutomation ayuda a automatizar cualquier tipo de aplicación de escritorio que implemente
la interfaz UIAutomation. Si un componente automatizado no responde a una solicitud de acción de perfil
superior, el conector UIAutomation envía clics de ratón o pulsaciones. En este caso, las acciones simuladas
como click() o set() pueden generar limitaciones.
Por ejemplo, en Acrobat Adobe Reader, si hace un clic en Menú de archivos con la secuencia
[Link]() en lugar de la secuencia [Link](),
la acción será errónea cuando la pantalla esté bloqueada.
El mismo comportamiento puede producirse si gestiona el Explorador de archivos de Windows con el conector
de UIAutomation.
• Compruebe que el cursor se desplace hasta la posición del elemento cuando se llame la acción de clic.
• Combine la acción con un retraso durante el que puede bloquear la pantalla manualmente o desconectar la
sesión:
[Link](function(ev){
[Link]();
},10000);
La automatización de superficie se basa en clics de ratón y pulsaciones que precisan un escritorio que tenga la
pantalla desbloqueada.
[Link] Resoluciones
Los siguientes temas sugieren mejores prácticas para resolver el bloqueo de pantalla y las limitaciones de
infraestructura de escritorio virtual.
Si su bot se está ejecutando en modo no asistido, puede utilizar la actividad Desbloquear para resolver
problemas con clics del ratón y secuencias de pulsaciones.
Nota
ensureUnlocked
[Link]();
La actividad Desbloquear desbloquea una sesión bloqueada y le permite realizar clics del ratón o secuencias de
pulsaciones durante la ejecución de una automatización. Esta actividad vuelve a bloquear automáticamente la
sesión 10 segundos después de la acción.
Puede almacenar directamente sus credenciales de Windows en el archivo Desktop Agent. Para obtener más
información sobre cómo configurar las credenciales de Windows en Desktop Agent, consulte Establecer la
contraseña de Windows en Desktop Agent.
Encontrará más información sobre cómo guardar credenciales de Windows para iniciar un Desktop Agent en
modo no asistido en 3010368 .
Para resolver los problemas relativos a clics de ratón y pulsaciones, debe llevar un seguimiento de estas
acciones e identificarlas. Puede que estas acciones se hayan implementado así en el proyecto para evitar
códigos complicados o superar una manipulación incorrecta de los elementos por parte de la herramienta.
• [Link] / [Link]
• [Link]()
• [Link]()
Establecer un valor con el método de conjunto estándar podría no funcionar en todos los sitios web,
especialmente en un sitio web con un framework rico (por ejemplo, Arranque, Angular…).
El siguiente ejemplo muestra un caso estándar para un sitio web con un framework rico.
1. Al establecer un valor, el usuario obtiene una lista de quick info como entrada en la barra de búsqueda
"Búsqueda de componentes".
Aparece un nuevo mensaje en la página indicando el tipo de búsqueda realizada y si se ha fijado un valor
desconocido.
2. El usuario define el siguiente evento fijado simulado:
[Link]("IRPA");
[Link]();
[Link]();
[Link]();
[Link]("IRPA");
Nota
En un navegador web como Chrome, es necesario activar dos veces y después fijar el foco en el elemento al
que queremos enviar una secuencia de pulsación.
Para evitar una secuencia de pulsación simulada, no se debe enviar directamente al elemento.
Esta solución se puede aplicar a pantallas desbloqueadas; sin embargo, no se aplica a máquinas que tengan
una pantalla bloqueada y una infraestructura de escritorio virtual desconectada. Con una pantalla bloqueada,
[Link] está bloqueado.
[Link]("IRPA");
[Link]("input");
Una página web más compleja puede requerir que el usuario trabaje directamente en el navegador en el modo
de desarrollador para buscar una solución.
También se puede hacer para un evento de teclado, para entradas que solo necesiten una entrada clave
específica.
Una mejor práctica habitual es configurar el entorno de modo que la pantalla no se bloquee.
De este modo se podrán utilizar clics de ratón y pulsaciones sin quedar encallado y ser enviado al bloqueo de
pantalla en lugar de a la aplicación prevista.
Si utiliza una infraestructura de escritorio virtual y se requieren clics de ratón y pulsaciones, puede:
Es posible que finalmente tenga un proyecto que inicie esta conexión desde un equipo local.
Si todas las resoluciones sugeridas hasta el momento no funcionan, trate de encontrar una solución alternativa
funcional. Otra secuencia de pantalla, otro pulsador en el que hacer clic, cualquier otra forma de validar el
formulario también puede funcionar sin necesidad de hacer clic con el ratón o una pulsación.
Si ninguna de las soluciones alternativas es aplicable, puede que termine por ser un bloqueador para su
proyecto.
Es importante llevar un seguimiento de estas limitaciones en una fase temprana de POC, diseño o
implementación. Para ello, puede:
La biblioteca de PDF permite extraer datos de documentos PDF en los que se puede buscar texto.
En algunos casos, la biblioteca de PDF no puede localizar correctamente el texto buscado en un documento.
De hecho, el orden de los elementos de texto devueltos puede no corresponderse con las coordenadas visuales
que se utilizan para renderizarlos.
1. Utilice el método getText para recuperar el texto completo del documento PDF.
2. Analice la estructura del índice extraído para localizar los elementos de texto que desea recuperar.
3. En función de la estructura del índice, utilice un método o actividad adecuados para recuperar el elemento
de texto (getWordAfter o getWordBefore, por ejemplo).
Nota
Aquí no se puede aplicar una solución alternativa única. En algunos casos puede resultar útil pasar
de getWordAfter a getWordBefore (o viceversa). En casos más complejos, debe profundizar en la
estructura de índice y buscar una que sea estable.
Contexto
Cuando utilice la función [Link] para comunicarse con un servicio Web, recibe un estado del servidor
como:
• 200.
• 300.
• etc.
A veces, parece que la llamada no funciona y recibe un mensaje de error genérico. Puede ser:
• Solo el estado.
• Un mensaje genérico.
Motivos
• SOAP.
• ODATA.
• REST.
Si combina todos estos servicios Web y opciones, esto puede llevarle a muchas posibilidades diferentes. Por lo
tanto, hay muchas formas de configurar el método [Link].
Además, es posible que se encuentre con una configuración incorrecta de los servidores o certificados que
puede provocar problemas específicos.
En esta parte, puede encontrar las principales causas de los problemas y cómo resolverlos.
Los certificados del cliente se utilizan para autenticarse en un servidor. A veces no se puede conectar a un
servidor con un certificado.
Ejemplo:
[Link]({
url: url,
method: 'GET',
contentType: "application/json",
headers: headers,
ignoreClientCertificate: true,
success: function(res, status, xhr) {
[Link] = [Link]["x-csrf-token"];
[Link]();
},
error: function(xhr, status, statusText) {
[Link]('error get')
[Link]();
}
});
Además, no puede especificar qué certificados utilizar ya que no se encuentran en un entorno de navegador.
Para obtener más información sobre cómo solucionar este problema, consulte: Cómo lidiar con problemas de
llamadas de Ajax en Llamada Ajax [página 27]
Las cookies le permiten autenticar solicitudes de cliente y conservar toda la información de la sesión.
Si necesita utilizar cookies en sus llamadas, debe establecer una cookie para conservar esta información. A
continuación, podrá utilizarla en otra llamada.
Ejemplo:
contentType: [Link],
usePassport: true,
ignoreClientCertificate:true,
headers : {
'Authorization': 'Basic [base 64 login:password]',
'X-CSRF-Token': 'Fetch'
},
success: function(res, status, xhr) {
[Link](function(ev) {
try {
[Link](function(ev) {
[Link]({ //Second call, use the cookies in the headers object
url: myUrl,
method: [Link],
ignoreClientCertificate:true,
contentType: 'application/json;charset=utf-8',
headers : {
'Content-type': 'application/json;charset=utf-8',
'X-CSRF-TOKEN': csrf,
'Cookie': cookie
},
success: function(res, status, xhr) {
},
error: function(xhr,res,status) {
}
});
}, 0);
} catch (ex) {
}
}, 0);
},
});
Un token es un dato creado por un servidor que contiene información para identificar un usuario y la validez del
token. Si utiliza el token de forma incorrecta en la llamada de Ajax, puede provocar un problema. Al igual que
las cookies, el token necesita dos llamadas.
Por ejemplo, realiza una llamada API en Factory. Utilice la primera llamada para obtener el token. La segunda
llamada desencadena la llamada API y crea un job en la cola de jobs. En este caso, las llamadas están
enlazadas. La segunda llamada se produce si la primera tiene éxito.
Ejemplo:
method: [Link],
contentType: [Link],
header:{
Accept: [Link],
},
[Link]('Token generated');
method: [Link],
contentType: [Link],
header:{
Accept: [Link],
'irpa-trigger-token':
[Link], //Token get from the API trigger
Authorization: [Link]
},
data:{
},
[Link]('success');
[Link]();
return;
},
[Link]();
return;
});
},
[Link]();
return;
}
});
Aquí hay algunos ejemplos de las mejores prácticas para las llamadas de servicio Web.
Como se ha indicado anteriormente, debido a la complejidad de la llamada de Ajax, puede que tenga diferentes
problemas.
Para evaluar estos problemas con la llamada de Ajax, puede utilizar múltiples herramientas:
• Postman.
• cURL.
• Comandos de terminal.
• Llamada de Ajax.
Postman es una herramienta que le permite interrogar y probar servicios Web y llamadas API.
[Link].2 cURL
cURL es una herramienta de línea de comandos que puede utilizar para obtener o enviar datos, incluidos los
archivos con sintaxis de URL.
Nota
Si no funciona ni siquiera con Postman, significa que no puede hacer que funcione con la función de
llamada de Ajax.
Nota
Puede ver diferentes idiomas en el cuadro rojo de la izquierda. Aquí, elegimos el idioma JavaScript-
jQuery porque la función de llamada de Ajax se ha desarrollado con el método [Link](). En la
casilla verde, observa el código generado por Postman.
if(res.d){
result = xhr;
success(result);
} else {
result = res;
error(result);
}
},
error: function(xhr, error, statusText) {
result = res;
error(result);
}
});
Si aún tiene problemas durante la llamada (problemas del objeto xhr) después de haber realizado el test en el
proceso anterior, intente lo siguiente:
Nota
Si aún no funciona, verifique el código de error, que puede llevarle al origen del error.
.
2. Modifique las opciones en Postman.
Si tiene un mensaje de error que aparece con el código cURL, realice una búsqueda en Internet. Los
mensajes de error suelen ser muy explícitos. Si el código tiene éxito, puede integrarlo en una llamada
SAP Intelligent RPA.
• Implemente este código en Desktop Studio.
Nota
Es responsabilidad del desarrollador garantizar que no se introduzca una gran cantidad de datos en el objeto
de datos sc. cuando se ejecute un escenario, porque el objeto de datos sc. se devuelve a Cloud Factory.
A modo de solución, si se genera y gestiona una gran cantidad de datos mientras se ejecuta un escenario, se
pueden vaciar (parcial o completamente) en el último paso del escenario.
Ejemplo:
...
[Link] = [Link](theBigFile);
...
[Link] = undefined;
[Link]();
A veces puede encontrarse con captchas cuando desea automatizar un sitio web.
• Puede intentar resolver captchas utilizando p. ej. una biblioteca de reconocimiento de imágenes externa
(puede ser un desarrollo de proceso duro).
• También puede intentar detectar cuándo se visualiza el captcha y evitar este comportamiento. Así p. ej., un
captcha puede visualizarse cuando los campos de un formulario se completan demasiado rápido. En este
caso, lo mejor es añadir p. ej. un retraso de tres segundos entre cada paso de su automatización.
Cuando se captura una tabla con jerarquías bajas en Desktop Studio, se visualizan muchos elementos en el
programa de pruebas de la aplicación.
Reconocer todos los elementos de la pantalla requiere muchas pruebas, lo que puede provocar un mal
rendimiento durante la ejecución del bot.
Para gestionar este comportamiento, puede evitar leer la tabla de Desktop Studio y, en su lugar, leer la tabla de
Excel. Para exportar la tabla a un archivo Excel, debe pulsar MAYÚS + 4 y capturar dos ventanas emergentes.
Una vez capturadas las dos ventanas de diálogo, puede automatizar las pantallas capturadas con el siguiente
procedimiento.
Procedimiento
Resultado
Un ejemplo típico sería que necesita colocar un archivo o una carpeta localmente. Pedir a los usuarios finales
que creen una carpeta manualmente para el bot no es muy conveniente. Además, es difícil encontrar un
nombre de ruta convencional que funcione para todos los usuarios de su organización.
Puede evitarlo haciendo que el bot cree estas carpetas de forma predeterminada. Por lo tanto, si el bot
no encuentra la carpeta necesaria en el equipo, la creará. Puede hacerlo aún más práctico añadiendo una
condición para verificar la existencia de la carpeta.
Código de ejemplo
var configFile
=[Link]([Link]) + "\
\Automations\\"+ [Link] + "\\config";
if (![Link]){
[Link](configFile);
}
Archivos de trabajo
Para los archivos temporales utilizados por el bot, los usuarios de Windows pueden necesitar algunas
autorizaciones específicas. La mejor práctica es crear estos archivos en la carpeta de log del proyecto. Esta es
la forma más conveniente de gestionar los archivos de trabajo.
Código de ejemplo
Al gestionar un archivo/carpeta común para un grupo de usuarios que tienen acceso a un repositorio
compartido. Puede utilizar la variable de texto de Cloud Factory para almacenar la vía de acceso y recuperarla
en su script como en el ejemplo siguiente.
Código de ejemplo
var mypath;
//
----------------------------------------------------------------
// Step: get_path_var
//
----------------------------------------------------------------
[Link]({ get_path_var: function(ev, sc, st) {
var rootData = [Link];
[Link]('Custom_getPathVar', 'c514ca1b-3d9d-445b-
a2e3-069c9a7b9397') ;
} else{
[Link]('Error during setting retrieval');
[Link](); // pSapGlobalCloud8L_man
return;
}
[Link](); // code_
return;
});
}});
En caso de que su escenario requiera uno o varios archivos de salida, se recomienda crear la carpeta de salida
localmente.
Código de ejemplo
[Link]([Link]([Link]
sktop) + "\\Automations\\"+ [Link] + "\\output")
A veces puede encontrarse con un problema si ha activado la Extensión de SAP Intelligent RPA para Chrome
dos veces.
Contexto
Para obtener más información sobre cómo habilitar la extensión del navegador web para Chrome, consulte
Configuración de navegadores web.
Si ha activado la Extensión de SAP Intelligent RPA para Chrome dos veces, pueden surgir los siguientes
problemas:
• Cuando quiera capturar una aplicación, verá que la aplicación aparece dos veces en el panel Capturar
aplicación. Esto sucede incluso aunque una de las aplicaciones se inicie en el navegador Chrome.
Información relacionada
En esta sección se describen las mejores prácticas para gestionar una ventana emergente ocupada por el
servidor mientras se ejecuta una automatización.
Síntoma
• La aplicación de destino está ocupada por completo y no puede responder a las solicitudes del agente.
• Se está ejecutando un JavaScript largo en una página web
• La página está descargando o cargando un gran conjunto de datos (descargando un archivo, buscando
datos en el back end, etc.).
• La aplicación va lenta o está en un entorno de tamaño inferior
• El agente intenta hacer una acción en esta misma aplicación al mismo tiempo (clic() o actualizar() o …)
La solución depende del conector técnico, pero básicamente debemos asegurarnos de que la aplicación esté
disponible antes de hacer nada más.
En algunos casos, se origina completamente a partir de la aplicación de destino. Esto significa que esta
ventana emergente podría iniciarse mediante una acción manual simple sin ningún agente en ejecución.
En ese caso, depende del usuario determinar cuándo puede ocurrir esto y cómo evitarlo manualmente. Tendrá
que imitarlo en su workflow.
Sin embargo, por experiencia, la mayoría de las veces la ventana emergente se desencadenará con el propio
agente ([Link]), aunque esté relacionada con la falta de disponibilidad de su aplicación.
La ventana emergente ocupada por el servidor debería desaparecer después de detener el agente.
Si proviene del agente, existen dos posibles orígenes técnicos que deben identificarse.
• SDK
• El SDK solicitará al conector técnico que realice acciones y solicitará un feedback.
• Sondeo personalizado y sondeo en el elemento ([Link]())
• Clic en un elemento
• Execscript
• Conector técnico
• El conector, junto a la ejecución de solicitudes del SDK (véase arriba), solicitará principalmente el
estado de la aplicación gestionada
• CARGA, espera de páginas
• Sondeo en páginas
• Inicio de la aplicación
Recordatorio
En cualquier caso, es esencial que identifique las acciones que pueden dar lugar a esta ventana emergente. La
mayoría de las veces, esta ventana emergente aparecerá constantemente en los mismos pasos del workflow.
Le recomendamos encarecidamente que utilice traces de proyecto para ello; consulte el artículo de la base de
conocimientos de SAP 2776434 .
En el caso de la ventana emergente Servidor ocupado, identificamos varias actividades posibles que conducen
a esto, pero no es exhaustivo, son actividades SDK. El SDK esperará un feedback del conector técnico que
puede estar pendiente esperando un feedback de la aplicación no disponible:
Tener una aplicación optimizada [página 63] es muy importante en este caso. La optimización de una
aplicación reducirá el coste de solicitar el estado de la aplicación, la página y el elemento.
Nota
Las prácticas recomendadas sobre el reconocimiento con UIAutomation consisten en evitar Debe
existir/No debe existir cuando sea posible. En este caso, es posible que tengamos que usarlos debido
a la necesidad de evitar sondeos en elementos. ([Link]/[Link])
Tipo SDK
UIAutomation/tecnología web
La página ha tardado mucho tiempo en cargarse o está descargando o cargando datos y experimenta este
problema al enviar una acción a la página. Es posible que esta página aún no esté completamente disponible o
que no se haya cargado con datos completos.
• Busque cualquier elemento que seguramente indique una CARGA completa de su página
• Actualización de título
• Actualización de paginación
• Elemento cargado completamente
• El elemento ya no está atenuado
• Desaparición del icono Cargando
• …
• Declararlo como MustExist en esta página, con criterios adecuados que indiquen el estado del elemento
esperado (no atenuado, no mostrar ninguno...)
• Esperar a la página relacionada también esperará este elemento sin sondeo SDK.
• Hacer un [Link] es una solicitud SDK
• Tener un "Debe existir" en el mismo elemento es solo una obligación del conector (entonces el SDK no
solicitará feedback > no habrá ninguna ventana emergente con servidor ocupado)
Tecnología GUI
Subpáginas
La subpágina puede provocar este problema. Entonces, debe evitar tener subpáginas GUI. Si no se reconoce
una subpágina GUI, SAP GUI se bloqueará, lo que provocará una ventana emergente ocupada por el servidor.
A pesar de deshacerse de las subpáginas y tener un número limitado de "Debe existir" y "No debe existir",
es posible que todavía se encuentre con el problema y, en ese caso, tendrá que aplicar una optimización
activa. Esto se hace utilizando una actividad y un método específicos en el workflow: setBusyWaitTime,
resetBusyWaitTime, lockRefresh y unlockRefresh.
• setBusyWaitTime y resetBusyWaitTime
La transacción SAPGUI puede estar ocupada al cargar páginas o al realizar tareas específicas. Es
importante evitar realizar una acción mientras se tiene una transacción ocupada. El agente siempre
intentará llevar a cabo una acción cuando la transacción no está ocupada. Si la sesión está ocupada
incluso después de un temporizador declarado, aparecerá una sesión de mensaje ocupada.
Estos dos métodos se utilizan para Extend the Wait Period When the SAP Session is Busy
El método setBusyWaitTime debería llamarse en el primer paso de un workflow. Normalmente se utiliza en
la página al gestionar la página de Easy Access.
[Link](//tiempo en milisegundos);
Por defecto, el tiempo de espera ocupado es de 1 segundo (1000 ms) y se puede modificar. Todas las
sesiones abiertas durante el proceso utilizarán ese tiempo para gestionar cada acción realizada en las
páginas de SAP GUI.
Cada acción realizada por el conector verificará regularmente hasta el temporizador si SAP GUI está
ocupado o no.
Utilice siempre resetBusyWaitTime cuando finalice el workflow como práctica recomendada.
• lockRefresh y unlockRefresh
UIAutomation y el conector técnico de SAPGUI están trabajando con el mecanismo de sondeo.
Actualizarán regularmente el estado de la aplicación gestionada desde el punto de vista del agente, así
como por su contenido. La actualización se realiza solicitando el estado directamente a la aplicación (y
potencialmente estresándola).
Nota
El sondeo automático puede ralentizar cada acción realizada en una página, especialmente cuando
esta página no se puede optimizar, tiene muchos elementos, profundidad y muchos elementos "Debe
existir" o "No debe existir".
Tipo conector
UIAutomation
A veces tiene ejecutar algunas acciones varias veces en el workflow de su automatización. La mayoría de las
veces utiliza un bucle For directamente en el código para hacerlo. Este método funciona bien si realiza acciones
simples como fijar valores en un archivo Excel u obtener valores de una matriz.
Sin embargo, si realiza tareas asincrónicas como llamadas de API o espera elementos, el bucle For no espera
hasta el final de las acciones asincrónicas para ejecutar la siguiente iteración y, por lo tanto, no funciona de la
forma prevista. La siguiente iteración se ejecuta una vez que se realiza la acción asincrónica. Como resultado,
el paso posterior al bucle For se puede ejecutar antes de que finalicen todas las acciones asincrónicas. Si el
siguiente paso necesita datos de eventos asincrónicos anteriores, estos datos no se pueden fijar a tiempo.
A veces es necesario realizar una llamada API varias veces. Para ello, primero cree su llamada API y rodéela de
un bucle For. A continuación, añada el siguiente paso (como una sencilla actividad Grabar en log).
En el siguiente código puede esperar que el bot llame la API tres veces e imprima el resultado tres veces y, a
continuación, imprima el mensaje de log Workflow finalizado.
Como se ha mencionado anteriormente, cada paso se llama después de ejecutar el anterior. Como resultado,
la actividad Finalizar bucle se ejecuta una vez que la actividad Llamar un servicio Web ha finalizado su ejecución
y obtiene el resultado de la API.
En el depurador puede ver que el orden de todos los logs es el correcto según lo previsto.
De este modo, la implementación de actividades de bucle garantiza que todos los pasos se ejecuten en el
orden correcto.
A veces debe esperar un tiempo antes de ejecutar la siguiente actividad y se produce el mismo
comportamiento que se ha descrito anteriormente en la sección Llamadas API en un bucle For.
En el siguiente código puede ver que se produce el mismo error que en la sección Llamadas API en un bucle
For.
Para ejecutar todos los pasos en el orden correcto debe modificar el código anterior y utilizar actividades de
bucle de la siguiente manera:
Por lo tanto, la implementación de actividades de bucle garantiza que todos los logs de índice se impriman
antes que el log final.
Están disponibles las siguientes notas de la base de conocimiento relacionadas con Cloud Factory:
• Error "No se puede crear el paquete. La versión del paquete ya existe para 'ProjectName'" al intentar
importar un proyecto en Factory - 2792210
• "Factory no ha podido cargar insufficient_scope: Alcance insuficiente para este recurso" - 2802932
• No pasa nada al iniciar un escenario no asistido con Desktop Agent - 2796491
• Cómo ocultar la información del equipo o del inicio de sesión: 3056143
El error de alcance insuficiente aparece cuando se intenta acceder al servicio de SAP Intelligent RPA Factory.
Contexto
Este error significa que el proceso de incorporación de SAP Intelligent RPA no se ha completado totalmente.
Los roles correctos no se han configurado y asignado.
Para resolver este problema, debe añadir roles y usuarios a estos roles.
Configurar roles
Nota
Debe tener el rol Administrador de seguridad para acceder a la pestaña Seguridad en el cockpit de SAP
BTP (Business Technology Platform).
3. Haga clic en la colección de roles que acaba de crear y seleccione Añadir rol.
4. En la lista desplegable Identificador de aplicación, seleccione el rol IRPAOfficer para crear el administrador
del arrendatario.
5. Cierre la sesión y vuelva a iniciarla para que se consideren sus nuevos roles.
Nota
• Los usuarios que quieren configurar bots en Cloud Factory: añada el rol IRPAOffice a estos usuarios.
• Los usuarios que quieren ejecutar bots: añada el rol IRPAAgentUser (asegúrese de que el rol esté
configurado en la colección de roles).
• Algunas actividades no pueden editarse después de cambiar a una versión inferior de un SDK -
3025037
• Cómo configurar Outlook para utilizar SAP Intelligent RPA Outlook SDK - 3048085
• Qué hacer si la actividad Fijar valor de la variable no funciona con subpropiedades de objeto -3145604
Las funcionalidades de Desktop Studio se encuentran en Cloud Studio con la misma nomenclatura o con
otra diferente. Las funcionalidades que tienen funciones similares o avanzadas sirven para lo mismo que en
Desktop Studio.
El contexto
Crear carpeta
En Desktop Studio, el contexto es el administrador de datos y se utiliza para gestionar todos los datos que
surgen al ejecutar un escenario. Así, se puede encontrar la misma funcionalidad en Cloud Studio con otra
nomenclatura, a saber Parámetros de entrada/salida.
Para conocer más detalles sobre cómo administrar datos, consulte la sección Gestionar datos dentro de una
automatización.
Crear elemento
En Desktop Studio, Contexto>Crear elemento = En Cloud Studio, Tipos de datos (editor predefinido o de tipo
de datos).
Cuando captura elementos que no tienen cuadros de límite, no puede utilizar el control Para cada.
Contexto
Cuando captura una pantalla que tiene elementos recurrentes como varios enlaces, puede utilizar el control
Para cada. El control Para cada se aplicará a todos los elementos recurrentes.
Si añade actividades al control Para cada, se aplicarán a todos los elementos recurrentes relacionados.
Cuando está trabajando en pantallas capturadas, los elementos capturados a veces no son visibles porque no
tienen cuadros de límite. Por lo tanto, no puede utilizar Para cada.
1. Desde el panel lateral Información de automatización, arrastre y suelte una actividad de Script
personalizado en su automatización.
2. En el panel lateral Detalles del paso, haga clic en Editar script.
4. En el panel central, añada la función getItems al final de todos los elementos ocultos (porque no tienen
ningún cuadro de límite).
Cuando el bot se ejecuta en modo no asistido, a veces es necesario desbloquear la sesión para realizar
actividades. Por ejemplo, las actividades de pulsación y clic del ratón requieren desbloquear la sesión que se va
a realizar. Si ha configurado sus credenciales de Windows en Desktop Agent, la sesión se desbloquea y vuelve a
bloquear automáticamente cuando se deben realizar dichas actividades.
Para asegurarse de que la sesión se desbloquee y bloquee, primero debe configurar sus credenciales de
Windows en el archivo Desktop Agent. Para obtener más información sobre cómo almacenar sus credenciales
de Windows, consulte Establecer la contraseña de Windows en Desktop Agent.
Desktop Agent usa sus credenciales para desbloquear automáticamente la sesión. Una vez realizada la
actividad, la sesión se vuelve a bloquear automáticamente 10 segundos después de la acción.
Siempre que tenga alguna aplicación que se ejecute con más privilegios que el agente de escritorio (modo
de administración), el agente no podrá interactuar con la aplicación. Podrá llevar a cabo actividades de solo
lectura, como resaltar, obtener el valor de un campo, etc., pero no podrá efectuar actividades como hacer clic
en un elemento, fijar un valor en un campo, etc. Por lo tanto, experimentará problemas técnicos si su aplicación
se ejecuta con un privilegio superior, como el modo "Admin".
Prerequisites
Context
You can launch the SAP Logon application with an unattended bot using the custom script activity,
environment variables, and scheduled trigger.
The following use case demonstrates how to launch the SAP Logon application in unattended mode.
Procedure
This line makes the SAP Logon starts and logs in with the system, the client, the user, and the password
you specified. You concatenate your variables to the line that gets executed on a shell by the automation.
Results
Now the automation to SAP logon is complete and you can setup the environment to launch this automation in
unattended mode.
1. Now that you finished designing your project, you need to create a package to add the project to your
environment. For more information, see Generar paquetes.
2. Once you generate the package, add the package to your environment. For more information, see Añadir
paquetes a un entorno.
You can also set values to environment variables when deploying a package in the environment. For more
information, see Variables de entorno desde Cloud Studio.
As you want to run the automation in unattended mode, you must select the trigger type Scheduled. For
more information, see Añadir un desencadenador programado.
Nota
You must select your agent in Unattended mode directly in the agent systray. The first time you launch
the bot, the following pop-up can appear.
You can check the Remember My Decision checkbox and click the Allow button to not display the
pop-up anymore.
Introducción
La automatización de cualquier tipo de aplicación (web, UIAutomation, etc.) solo se puede hacer
correctamente con un buen reconocimiento de páginas y elementos.
Nota
A veces no basta con esto y se pueden ver algunos efectos secundarios durante la automatización.
Por ejemplo, si aparece el mensaje de error “Se ha agotado el tiempo de esperando la respuesta del piloto”,
significa que debe optimizar el reconocimiento del elemento de destino. Técnicamente hablando, el conector
envía la acción al elemento, pero se tarda demasiado tiempo en devolver una respuesta.
Pestaña Reconocimiento
En SAP Intelligent RPA 1.0 tenemos la posibilidad de ver cuántas pruebas hace el conector para reconocer una
página o elemento en particular.
En Desktop Studio, en el lado del reconocimiento de aplicaciones, mire a la derecha después de los
parámetros; debería ver el botón "Reconocimiento".
Al hacer clic en cada página de una aplicación, verá cuántos tests se hacen para reconocer cada elemento.
Como se puede ver a continuación, algunos de los elementos tienen más de 4000 pruebas antes de ser
reconocidos.
Lo que queremos es tener menos pruebas como sea posible y llegar a 1 prueba si es posible.
Para ello, tendremos que optimizar el reconocimiento con capacidad de reconocimiento avanzado.
Nota
Dependiendo del conector, no siempre es necesario optimizar cuando hay una gran cantidad de pruebas.
Web: Este conector es rápido y tener 500 – 1000~ no es una gran cantidad de pruebas; la automatización
puede funcionar de manera rápida y adecuada.
SAP GUI: Al utilizar un ID/nombre como criterio para un elemento (tener unas 3000 pruebas no es un
problema en este caso, ya que el conector ya se beneficia de una optimización interna).
No hay un "buen" rango de pruebas, ya que depende de la tecnología. Como se ha comentado anteriormente
para la web, puede haber 1000 y aun así funcionar bien, pero para UIAutomation sería demasiado.
Para cualquier otra situación, se debe implementar el uso del reconocimiento avanzado.
No es obligatorio en absoluto, pero si ve una automatización lenta, por ejemplo, y desea potenciarla, optimizar
el reconocimiento es probablemente la mejor manera de conseguirlo.
Nota
: Existe un compromiso entre tener menos pruebas y el número de criterios utilizados para reconocer un
elemento.
Por ejemplo, tendrá un número bajo de pruebas empleando Items Pattern Method. Sin embargo, al hacerlo, si
el DOM de la aplicación cambia, tendrá que volver a a actualizar los criterios.
Manténgalo lo más pequeño posible, ya que el conector probará, en orden, cada elemento.
Si el conector prueba un elemento sin sentido antes del elemento con el que desea interactuar, perderá un
tiempo valioso.
Conclusión
Como hemos visto, cuando hablamos de optimización del reconocimiento, hay que mirar el panel de
reconocimiento.
No hay un “buen” número de pruebas, cada conector no funciona igual con respecto al reconocimiento.
Como mejor práctica, conserve solo los elementos útiles. Mantener un elemento que no se utiliza durante
la automatización o que no se utiliza para reconocer otro elemento ralentizará todo el reconocimiento de la
página.
Ahora ya sabe más acerca de la optimización y la forma de verificar si una aplicación está bien reconocida.
Encontrará más información sobre el panel de reconocimiento siguiendo este enlace a la documentación
oficial.
Cada vez que realiza una prueba local con Cloud Studio y Desktop Agent, suceden varias cosas entre
bastidores que podrían tomar un tiempo durante la prueba inicial:
• Agent se tendrá que reiniciar en "modo de prueba" para activar el canal de comunicación correcto entre
Cloud Studio, la extensión de navegador y el puente Studio
• Los paquetes SDK añadidos dentro de su proyecto:
• Se descargarán de Cloud Studio
• Se desempaquetarán
• Se cargarán en la memoria de Agent
• Los paquetes dependientes (si los hay) se descargarán, desempaquetarán y cargarán siempre que sea
necesario
• El proyecto se descargará, desempaquetará y cargará en la memoria de Agent
• Como el contenido se descarga de Cloud Studio y se procesa en Desktop Agent, los recursos también se
pueden verificar con procesos antimalware o antivirus habituales en segundo plano.
Siempre que pulse el botón de prueba sin realizar ninguna modificación en el proyecto, todos los recursos ya
estarán dentro de Desktop Agent y la prueba se iniciará al instante.
• Si se han actualizado más de diez artefactos desde la última ejecución, Agent se reiniciará por completo.
• Las modificaciones de otros artefactos (como la declaración de aplicación) aún requerirán que se reinicie
Agent.
Puede ejecutar una automatización determinada durante la ejecución de otra dentro de Cloud Studio. Existen
dos posibilidades: mediante una dependencia directa o mediante un desencadenador de API.
Por ejemplo, supongamos que desea ejecutar la "automatización 1" desde el "paquete 1" en la "automatización
2".
Debe compartir el paquete con Todos los usuarios y seleccionar Lectura como autorización, tal como
se muestra a continuación:
3. Abra el "paquete 2" en Cloud Studio y añada el "paquete 1" como dependencia. Asegúrese de seleccionar
la versión de paquete correcta.
4. Ahora, el primer paquete estará disponible para ejecutar en la lista de automatizaciones de su proyecto.
A continuación, puede decidir si ejecuta las automatizaciones de forma sincrónica o si las ejecuta más
adelante.
Esta opción es más compleja. Este método funciona añadiendo un job nuevo a la cola en Cloud Factory. Por lo
tanto, se ejecutará más adelante en su entorno, pero no de forma sincrónica.
Tendrá que crear un desencadenador de API específico y, a continuación, realizar una llamada a un servicio
web para ejecutar la automatización.
Para obtener más información, consulte la página sobre Cómo añadir un desencadenador de API y Ejecutar un
desencadenador de API.
Hiperenlaces
Algunos enlaces se clasifican con un icono y/o con un texto al pasar el puntero del ratón. Estos enlaces proporcionan información adicional.
Acerca de los iconos:
• Enlaces con el icono Está entrando en una página Web que no está alojada por SAP. Al usar este tipo de enlaces, manifiesta su acuerdo (a no ser que se
indique expresamente lo contrario en sus contratos con SAP) con lo siguiente:
• El contenido del sitio al que se accede a través del enlace no es documentación SAP. No puede realizar ninguna reclamación de producto contra SAP en
base a esta información.
• SAP no manifiesta su acuerdo o desacuerdo con el contenido del sitio al que se accede a través del enlace, ni garantiza su disponibilidad o exactitud. SAP
no es responsable de ningún daño causado por el uso de este contenido a menos que los daños se hayan causado por una imprudencia grave o por una
conducta fraudulenta dolosa por parte de SAP.
• Enlaces con el icono Está dejando la documentación para este producto o servicio de SAP en concreto y está entrando en un sitio Web alojado por
SAP. Al usar este tipo de enlaces, manifiesta su acuerdo (a no ser que se indique expresamente lo contrario en sus contratos con SAP) a no realizar ninguna
reclamación de producto contra SAP en base a esta información.
Código de ejemplo
Cualquier codificación de software y/o fragmentos de código son ejemplos. No están previstos para su uso productivo. El código de ejemplo tiene el único propósito
de explicar y permitir la visualización de las reglas de sintaxis y de redacción SAP no garantiza la exactitud ni la integridad de los códigos de ejemplo. SAP no es
responsable de ningún error o daño causado por el uso de código de ejemplo a menos que los daños se hayan causado por una imprudencia grave o por una conducta
fraudulenta dolosa por parte de SAP.