363n de problemas

70
PUBLIC (PÚBLICO) 2022-05-30 Solución de problemas © 2022 SAP SE o una empresa filial de SAP. Reservados todos los derechos. THE BEST RUN

Transcript of 363n de problemas

Page 1: 363n de problemas

PUBLIC (PÚBLICO)2022-05-30

Solución de problemas

© 2

022

SAP

SE o

una

em

pres

a filial d

e SA

P. R

eser

vado

s to

dos

los

dere

chos

.

THE BEST RUN

Page 2: 363n de problemas

Contenido

1 Solución de problemas y soporte. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.1 Desktop Agent. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

Mensajes de error de Desktop Agent. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4Bandeja de sistema en blanco para agente de escritorio. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6Utilizar el equipo mientras se ejecuta un bot. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .7Reinicio del sistema durante el modo no asistido. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

1.2 Desktop Studio. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9Best Practices para bloqueo de pantalla e infraestructura de escritorio virtual desconectada. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9Best Practices para la biblioteca de PDF. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20Mejores prácticas para las llamadas de servicio Web. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .20Prácticas recomendadas para gestionar una cantidad importante de datos al ejecutar un escenario. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31Buenas prácticas para captchas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31Prácticas recomendadas para la automatización de pantallas SAP GUI con jerarquías bajas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32Mejores prácticas para gestionar archivos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34Prácticas recomendadas para la extensión de Chrome. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36Mejores prácticas para gestionar la ventana emergente Servidor ocupado. . . . . . . . . . . . . . . . . 39Eventos asincrónicos en bucles For. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

1.3 Cloud Factory. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .48Alcance insuficiente. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .48

1.4 Cloud Studio. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52Asignación de funcionalidades de Cloud Studio y Desktop Studio. . . . . . . . . . . . . . . . . . . . . . . .52Definir el control "Para cada" para elementos sin cuadro de límite. . . . . . . . . . . . . . . . . . . . . . . 53Desbloquear una sesión bloqueada durante la ejecución de automatización. . . . . . . . . . . . . . . . 55Iniciar SAPlogon en modo no asistido. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56Mejores prácticas para optimizar un elemento. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62Cómo funcionan las pruebas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64Ejecutar una automatización desde otra automatización. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65

2PUBLICPÚBLICO

Solución de problemasContenido

Page 3: 363n de problemas

1 Solución de problemas y soporte

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 https://support.sap.com/ 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

● Notas relacionadas con Desktop Agent [página 3]● Notas relacionadas con Desktop Studio [página 9]● Notas relacionadas con Cloud Factory [página 48]

Multicomponentes y otros problemas

● ¿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

rapid.sap.com. Consulte la nota 2788986 para consultar la estrategia del release.

Instalación y configuración

● Requisitos previos técnicos y requisitos técnicos del sistema● Configuración de SAP Intelligent Robotic Process Automation Factory● Configuración de componentes locales● Actualizar la infraestructura de SAP Intelligent RPA 1.0 (Desktop Agent y Studio)● Configuración de navegadores web

1.1 Desktop Agent

● Cómo evitar problemas de conexión: 3155610● Error "El agente XXX ya está conectado" al intentar iniciar sesión en Desktop Agent - 2796483● No pasa nada al iniciar un escenario no asistido con SAP Intelligent RPA Desktop Agent - 2796491● El icono de Desktop Agent no aparece en la bandeja del sistema de Windows - 2796377● Al descargar un paquete desde Factory, se produce un error "CCtxtRun2Dlg::OnGoToSocket: SetIpaSocket

fallido" - 2798996● No hay ninguna clave de registro o el valor incorrecto & no encuentra ningún fichero JSON - 2796396● Problema al reiniciar el agente (nueva sesión de ventana, cambio de proyecto o proyecto nuevo de

Factory). Para habilitar el reinicio del agente, el servicio "SAP Intelligent RPA Service" (CxAgent.exe) debe estar activo y en ejecución.

Solución de problemasSolución de problemas y soporte

PUBLICPÚBLICO 3

Page 4: 363n de problemas

● Si necesita investigar la conexión del agente y de Factory: descargue el historial de eventos de un agente en SAP Intelligent RPA Factory. Para obtener más información, consulte Resumen de agentes.

● Cómo corregir problemas de conexión del agente que se producen al actualizar Cloud Factory: 2981018● Cómo ocultar la información del equipo o del inicio de sesión: 3056143

1.1.1 Mensajes de error de Desktop Agent

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.

A continuación encontrará algunos errores comunes que se podrían producir:

● Error en el control de funcionamiento (HEALTHCHECK_FAILURE) - Existe un URL de arrendatario, pero el servidor ha devuelto un error○ Causa: El URL existe pero el agente no puede conectarse.○ Resolución:

○ Verifique el URL con un navegador web.○ Póngase en contacto con el administrador para que le facilite el URL correcto○ Compruebe la conectividad

Si utiliza una VPN, este problema puede deberse al hecho de que su VPN no permite Websockets. Para obtener más información, consulte la sección Acerca del protocolo WebSockets en la parte inferior de esta página: Requisitos previos técnicos y requisitos técnicos del sistema.

● No se puede acceder al servidor URL del arrendatario (RETRY_HEALTHCHECK_ON_FAILURE)○ Causa: El URL ya no está disponible.○ Resolución:

○ La conectividad se ha interrumpido: Reinicie la interfaz de red, verifique la IP y el DNS.○ URL incorrecta: Póngase en contacto con el administrador para que le facilite el URL correcto

● Autenticación no completada (AUTHENTICATION_NOT_COMPLETED)○ Causa: La autenticación no se ha completado completamente

4PUBLICPÚBLICO

Solución de problemasSolución de problemas y soporte

Page 5: 363n de problemas

○ Resolución: Reinicie el agente para poder volver a iniciar la autenticación● Se ha perdido la conexión (NEED_SENDING_CLIENT_INFO)

○ Causa: Desconexión de cables, desconexión Wi-Fi...○ Resolución: Compruebe la conexión; cuando se restablezca, el agente se volverá a conectar

automáticamente● No se ha encontrado el agente en el grupo de agentes (INVALID_SEND_CLIENT_INFO_ANSWER)

○ Causa: El agente no está declarado en Cloud Factory○ Resolución: Póngase en contacto con el administrador para añadir su agente a un grupo de agentes

(Agentes > Grupos de agentes)Para obtener más información, consulte Crear un grupo de agentes.

● La conexión se ha cerrado para siempre○ Causa: Error de comunicación entre Desktop Agent y Factory○ Resolución: Se debe actualizar Desktop Agent. La versión mínima necesaria para resolver este

problema es la versión 2011 2.0.6. Para más información, consulte la nota SAP 2997097 .● El paquete no existe en la bandeja de sistema

○ Causa: Su paquete no aparece en la bandeja de sistema○ Resolución: Vaya a Scripts y busque: GLOBAL.events.START.on(function (ev). Si ve un

fragmento como el que se muestra a continuación, comente la condición if:

Código de ejemplo GLOBAL.events.START.on(function (ev){ if(ctx.options.isDebug){ //Add item in systray menu. .... } });

● Esperando a que el usuario introduzca credenciales○ Causa: Desktop Agent espera a que el usuario introduzca sus credenciales○ Resolución: Cierre Desktop Agent y vuelva a iniciarlo, le pedirá que inicie sesión. Si sigue teniendo

problemas:1. Abra la URL del arrendatario en Internet Explorer, inicie sesión y guarde el ID de usuario y la

contraseña.2. Seleccione Herramientas > Opciones de Internet > Seguridad.3. Haga clic en Internet > Nivel personalizado....4. En Opciones > Scripting, fije Active scripting en Permitir.5. Vuelva a Opciones de Internet > Seguridad. Haga clic en Sitios de confianza y, a continuación, en

Sitios.6. Introduzca la URL del arrendatario y haga clic en Añadir para incluirla en la lista de sitios de

confianza.Ahora debería ver la ventana emergente que indica que Desktop Agent se está iniciando con las credenciales que ha almacenado. Ahora puede conectarse a Internet.

● Error de registro.○ Causa: El registro ha fallado○ Resolución: Asegúrese de utilizar la URL correcta revisando los pasos de registro del arrendatario.

Para obtener más información, consulte Registro de arrendatario de Desktop Agent.

Solución de problemasSolución de problemas y soporte

PUBLICPÚBLICO 5

Page 6: 363n de problemas

1.1.2 Bandeja de sistema en blanco para agente de escritorio

Ha verificado todos los requisitos previos técnicos y configurado el navegador, pero la bandeja de sistema del agente aparece en blanco.

Causa

Internet Explorer tiene un estado inestable.

Resolución

1. Restablezca la configuración de Internet Explorer.

6PUBLICPÚBLICO

Solución de problemasSolución de problemas y soporte

Page 7: 363n de problemas

2. Vuelva a configurar las opciones de Internet Explorer. Para obtener información detallada, consulte Configuración de navegadores web.

1.1.3 Utilizar el equipo mientras se ejecuta un bot

Es posible que desee utilizar su equipo mientras se ejecuta un bot.

NotaSi 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;

Solución de problemasSolución de problemas y soporte

PUBLICPÚBLICO 7

Page 8: 363n de problemas

● Puede utilizar su equipo si el workflow no contiene actividades que requieran abrir una aplicación o una ventana;

● Puede minimizar la aplicación a automatizar en función de su tecnología;● Si interactúa con la misma aplicación que el bot, existe un riesgo alto de conflictos (incluso aunque la

aplicación esté minimizada).

NotaSi 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.

1.1.4 Reinicio del sistema durante el modo no asistido

El sistema puede reiniciarse mientras Desktop Agent está en modo no asistido.

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.

Cómo iniciar Desktop Agent inmediatamente después del reinicio del sistema

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.

Cómo eliminar las credenciales

Las credenciales se pueden eliminar con el siguiente comando:

CxStoreCred.exe /forget

Con este comando, el Desktop Agent deja de reiniciarse automáticamente después del reinicio.

8PUBLICPÚBLICO

Solución de problemasSolución de problemas y soporte

Page 9: 363n de problemas

Encontrará más información sobre cómo iniciar Desktop Agent cuando se reinicia el servidor en la siguiente nota SAP: 3010368 .

1.2 Desktop Studio

Están disponibles las siguientes notas de la base de conocimiento relacionadas con Desktop Studio:

● Tiempo de espera largo al capturar una página con UI Automation - 2788781● No se puede crear el componente Gestor de depuración de procesos - 2781601● Error "System.InvalidOperationException" al depurar un proyecto en Desktop Studio - 2833621● Aparece una pantalla negra al capturar una página con Intelligent RPA Desktop Studio con Chrome -

2842523● No se ha encontrado el archivo [...] form.pscm - 2849305

Procedimientos para 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

● Best Practices para bloqueo de pantalla e infraestructura de escritorio virtual desconectada [página 9]● Best Practices para la biblioteca de PDF [página 20]● Mejores prácticas para las llamadas de servicio Web [página 20]● Prácticas recomendadas para gestionar una cantidad importante de datos al ejecutar un escenario [página

31]● Buenas prácticas para captchas [página 31]● Prácticas recomendadas para la automatización de pantallas SAP GUI con jerarquías bajas [página 32]● Mejores prácticas para gestionar archivos [página 34]● Mejores prácticas para gestionar la ventana emergente Servidor ocupado [página 39]

1.2.1 Best Practices para bloqueo de pantalla e infraestructura de escritorio virtual desconectada

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.

Solución de problemasSolución de problemas y soporte

PUBLICPÚBLICO 9

Page 10: 363n de problemas

Contexto

El usuario confirma que un job se ha ejecutado correctamente durante las etapas de implementación y prueba:

● Con un depurador y una herramienta de prueba.● Supervisando la ejecución del job en tiempo real en su equipo.

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.

Este problema se produce cuando:

● La pantalla está bloqueada en el equipo del usuario cuando se ejecuta un job.● Hay una sesión abierta en la infraestructura de escritorio virtual, aunque no hay actividad del usuario.● La infraestructura de escritorio virtual se minimiza al cabo de unos doce minutos.

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.

Este comportamiento es característico de las tecnologías y las aplicaciones que se administran dentro de la automatización.

Este tipo de problema se deriva principalmente de simulaciones de uso de un ratón y un teclado:

● application.page.item.mouseClick(); ● application.page.item.keystroke("text");

1.2.1.1 Causas

Los siguientes temas explican las principales causas de un bloqueo de pantalla y las limitaciones de la infraestructura de escritorio virtual.

1.2.1.1.1 Clic de ratón

Utilizar las siguientes acciones de clic de ratón simulado provoca limitaciones:

● application.page.item.click(true)● application.page.item.clickMouse(● cada ctx.mouse métodos

10PUBLICPÚBLICO

Solución de problemasSolución de problemas y soporte

Page 11: 363n de problemas

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.

1.2.1.1.2 Pulsaciones

El uso de las siguientes acciones de teclado provoca limitaciones:

● application.page.item.keyStroke(e.key.xxx)● application.page.item.keyStroke("Test")● ctx.keyStroke("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:

ctx.wait(function(ev){ application.page.item.keystroke(“text”); },10000);

Esta secuencia de pulsaciones creará un retraso durante el cual puede bloquear manualmente la pantalla o desconectar la sesión.

1.2.1.1.3 Automatización de IU

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 application.page.item.click() en lugar de la secuencia application.page.item.clickMouse(), 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.

Para identificar este tipo de acciones:

● 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:

ctx.wait(function(ev){ application.page.item.click(); },10000);

Solución de problemasSolución de problemas y soporte

PUBLICPÚBLICO 11

Page 12: 363n de problemas

1.2.1.1.4 Automatización de superficie con OCR

La automatización de superficie se basa en clics de ratón y pulsaciones que precisan un escritorio que tenga la pantalla desbloqueada.

1.2.1.2 Resoluciones

Los siguientes temas sugieren mejores prácticas para resolver el bloqueo de pantalla y las limitaciones de infraestructura de escritorio virtual.

Utilizar actividad de desbloqueo [página 12]

Llevar un seguimiento de las acciones de clic de ratón y pulsación [página 13]

Automatización de aplicaciones Web [página 13]

Uso del conector Win32 [página 17]

Mantener la pantalla desbloqueada [página 19]

Mantener una conexión con la infraestructura de escritorio virtual [página 19]

Identificar otra resolución funcional [página 20]

1.2.1.2.1 Utilizar actividad de desbloqueo

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.

NotaPara la tecnología SAP GUI, la actividad (o función) Desbloquear

ensureUnlocked

no es necesaria para las secuencias de pulsación de tecla.

Puede añadir la actividad Desbloquear en Desktop Studio o utilizar la siguiente función:

ctx.workstation.ensureUnlocked();

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.

Debe configurar la contraseña de la sesión para:

● abrir automáticamente la sesión cuando su equipo se inicie y sin intervención humana;● desbloquear la sesión durante unos segundos cuando el bot esté ejecutando una automatización.

12PUBLICPÚBLICO

Solución de problemasSolución de problemas y soporte

Page 13: 363n de problemas

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 .

1.2.1.2.2 Llevar un seguimiento de las acciones de clic de ratón y pulsación

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.

Si encuentra la siguiente acción de pulsación:

● ctx.keystroke / application.page.item.keystroke

puede sustituirla por un evento simulado:

● application.page.item.set()

Si encuentra la siguiente acción de clic:

● ctx.mouse.click / application.page.item.clickMouse / click(true)

puede sustituirla por un evento simulado:

● application.page.item.click()

1.2.1.2.3 Automatización de aplicaciones Web

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…).

Este comportamiento está relacionado con:

● Eventos JavaScript adjuntos a elementos de la página web● controles de superficie● una estructura de página compleja

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".

Solución de problemasSolución de problemas y soporte

PUBLICPÚBLICO 13

Page 14: 363n de problemas

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:

IRPAComponent.pMain.oSearchBox.set("IRPA");

14PUBLICPÚBLICO

Solución de problemasSolución de problemas y soporte

Page 15: 363n de problemas

El evento fijado no funciona por los siguientes motivos:○ No se visualiza ninguna quick info.○ No se visualiza ningún mensaje nuevo.

3. El usuario establece las siguientes secuencias de pulsación simuladas:

IRPAComponent.pMain.activate(); IRPAComponent.pMain.activate(); IRPAComponent.pMain.oSearchBox.setFocus(); ctx.keyStroke("IRPA");

NotaEn 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.

Solución de problemasSolución de problemas y soporte

PUBLICPÚBLICO 15

Page 16: 363n de problemas

El resultado es que se muestran una quick info y un mensaje.

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, ctx.keystroke está bloqueado.

Otra forma de resolver este comportamiento es utilizar eventos adjuntos al elemento:

IRPAComponent.pMain.oSearchBox.set("IRPA"); IRPAComponent.pMain.oSearchBox.trigger("input");

16PUBLICPÚBLICO

Solución de problemasSolución de problemas y soporte

Page 17: 363n de problemas

El resultado es que se muestran la quick info y el mensaje correspondiente. Esta solución se puede aplicar a máquinas con una pantalla bloqueada e infraestructuras de escritorio virtual desconectadas, siempre que la sesión esté activa.

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.

Por ejemplo, se puede simular un evento de ratón específico en la página:

application.page.item.scriptItem( "dispatchEvent( new MouseEvent( 'mouseover', {'bubbles': true, 'cancelable': true}))");

También se puede hacer para un evento de teclado, para entradas que solo necesiten una entrada clave específica.

1.2.1.2.4 Uso del conector Win32

Si identifica una aplicación como una aplicación Win32, podrá enviar acciones simuladas, incluso cuando la pantalla esté bloqueada y la infraestructura de escritorio virtual esté desconectada.

El conector Win32 no expone la arquitectura completa de una aplicación y, por tanto, no se puede acceder a todos los elementos.

Por ejemplo, con Adobe Acrobat Reader:

• Para manipular el menú y el submenú de archivos, se utilizan clics de ratón con el método de clic ().

• La misma aplicación capturada en el conector Win32 le permite manipular el mismo menú, incluso con la pantalla bloqueada.

Solución de problemasSolución de problemas y soporte

PUBLICPÚBLICO 17

Page 18: 363n de problemas

Si el conector UIAutomation es la única opción (por ejemplo, aplicación de 64 bits), la opción Uso de automatización Win32 está disponible para los objetos UIAutomation que empiezan con la versión 1.0.8 de Desktop Studio.

Esta opción solo está disponible en elementos que tienen los siguientes nombres de clase:

• Pulsador

application.page.item.click()

• Editar

application.page.item.set()

En la sección Datos capturados, cada uno de estos elementos también debe tener la propiedad de captura hWnd, diferente de 0x0.

18PUBLICPÚBLICO

Solución de problemasSolución de problemas y soporte

Page 19: 363n de problemas

1.2.1.2.5 Mantener la pantalla desbloqueada

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.

1.2.1.2.6 Mantener una conexión con la infraestructura de escritorio virtual

Si utiliza una infraestructura de escritorio virtual y se requieren clics de ratón y pulsaciones, puede:

● Configurar la infraestructura de escritorio virtual para evitar que se bloquee la pantalla.● Conectarse directamente a una infraestructura de escritorio virtual desde un equipo local.

Es posible que finalmente tenga un proyecto que inicie esta conexión desde un equipo local.

Solución de problemasSolución de problemas y soporte

PUBLICPÚBLICO 19

Page 20: 363n de problemas

1.2.1.2.7 Identificar otra resolución funcional

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:

● Utilizar acción + retraso + bloqueo de pantalla manual● Realizar pruebas periódicas en una infraestructura de escritorio virtual desconectada o en un equipo que

tenga la pantalla bloqueada.

1.2.2 Best Practices para la biblioteca de PDF

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.

Para superar estos desafíos, recomendamos lo siguiente:

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).

NotaAquí 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.

1.2.3 Mejores prácticas para las llamadas de servicio Web

20PUBLICPÚBLICO

Solución de problemasSolución de problemas y soporte

Page 21: 363n de problemas

Contexto

Cuando utilice la función ajax.call 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.

Puede ser difícil saber de dónde proviene el problema.

Motivos

Los servicios Web pueden combinar muchas opciones diferentes:

● Certificados en el lado del servidor/cliente.● Los certificados SSL, que cifran información, proporcionan autenticación, etc. Son necesarios si desea

autenticarse en el servidor.● Tokens.

Existen diferentes tipos de servicios Web:

● 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 ajax.call.

Además, es posible que se encuentre con una configuración incorrecta de los servidores o certificados que puede provocar problemas específicos.

1.2.3.1 Causas y resoluciones

En esta parte, puede encontrar las principales causas de los problemas y cómo resolverlos.

En los siguientes temas, obtendrá más información sobre:

● Certificados del cliente.● Certificados del servidor.● Cookies.● Tokens.

Solución de problemasSolución de problemas y soporte

PUBLICPÚBLICO 21

Page 22: 363n de problemas

1.2.3.1.1 Certificados del cliente

Los certificados del cliente se utilizan para autenticarse en un servidor. A veces no se puede conectar a un servidor con un certificado.

Puede utilizar la opción ignoreClientCertificate para evitar la autenticación del certificado.

Esta opción utiliza una implementación C++ de la llamada.

Ejemplo:

ctx.ajax.call({ url: url, method: 'GET', contentType: "application/json", headers: headers, ignoreClientCertificate: true, success: function(res, status, xhr) { rootData.xCSRF = xhr.headers["x-csrf-token"]; var value = xhr.headers["Set-Cookie"]; rootData.Cookies = value.split('; ')[0] + "; "; sc.endStep(); }, error: function(xhr, status, statusText) { ctx.log('error get') sc.endStep(); } });

1.2.3.1.2 Certificados del servidor

La API puede necesitar dichos certificados. Por lo general, son obligatorios.

ctx.ajax.call no puede forzar la llamada sin esos certificados.

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]

1.2.3.1.3 Cookies

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.

22PUBLICPÚBLICO

Solución de problemasSolución de problemas y soporte

Page 23: 363n de problemas

Ejemplo:

ctx.ajax.call({ //First call, get the cookies information url: "[url]", method: e.ajax.method.get, contentType: e.ajax.content.json, usePassport: true, ignoreClientCertificate:true, headers : { 'Authorization': 'Basic [base 64 login:password]', 'X-CSRF-Token': 'Fetch' }, success: function(res, status, xhr) { ctx.wait(function(ev) { try { var csrf = xhr.headers['x-csrf-token']; var cookie = xhr.headers['Set-Cookie']; var myUrl = "https://domainName/sap/opu/odata/sap/xxx"; ctx.wait(function(ev) { ctx.ajax.call({ //Second call, use the cookies in the headers object url: myUrl, method: e.ajax.method.post, 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); }, });

1.2.3.1.4 Tokens

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.

Solución de problemasSolución de problemas y soporte

PUBLICPÚBLICO 23

Page 24: 363n de problemas

Ejemplo:

ctx.ajax.call({ //First call, get the token url: serviceAccount.urls.accessTokenURL, //Url got from the service key “url parameter + /oauth/token?grant_type=client_credentials” method: e.ajax.method.get, contentType: e.ajax.content.json, header:{ Accept: e.ajax.content.json, Authorization: 'Basic ' + ctx.base64.encode(serviceAccount.credentials.clientID + ':' + serviceAccount.credentials.clientSecret, false) // clientID and clientSecret got from the service key }, success: function(res, status, xhr) { ctx.log('Token generated'); sc.localData.Token = 'Bearer ' + ctx.get(res, 'access_token'); ctx.ajax.call({ // Second call url: serviceAccount.urls.apiTriggerURL, //Url from the API trigger (end with “/run”) method: e.ajax.method.post, contentType: e.ajax.content.json, header:{ Accept: e.ajax.content.json, 'irpa-trigger-token': serviceAccount.urls.irpaTriggerToken, //Token get from the API trigger Authorization: sc.localData.Token }, data:{ //Payload of your API Trigger }, success: function(res, status, xhr) { ctx.log('success'); sc.endStep(); return; }, error: function(xhr, status, statusText) { //web service failed

24PUBLICPÚBLICO

Solución de problemasSolución de problemas y soporte

Page 25: 363n de problemas

sc.setError(e.error.Fail, 'Web service failed: [' + status + ']' + statusText + ' - ' + xhr.responseText); sc.endScenario(); return; } }); }, error: function(xhr, status, statusText) { //web service failed sc.setError(e.error.Fail, 'Web service failed: [' + status + ']' + statusText + ' - ' + xhr.responseText); sc.endScenario(); return; } });

1.2.3.2 Ejemplos de las mejores prácticas

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.

1.2.3.2.1 Postman

Postman es una herramienta que le permite interrogar y probar servicios Web y llamadas API.

Esta herramienta tiene múltiples funciones y es fácil de utilizar.

Solución de problemasSolución de problemas y soporte

PUBLICPÚBLICO 25

Page 26: 363n de problemas

1.2.3.2.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.

En Windows 10 build 17063, cURL se incluye de forma predeterminada.

1.2.3.2.3 Comandos de terminal

En la petición de comandos, puede probar el comando cURL durante la evaluación.

Si el test es correcto, el agente llama el comando cURL a través del terminal.

26PUBLICPÚBLICO

Solución de problemasSolución de problemas y soporte

Page 27: 363n de problemas

1.2.3.2.4 Llamada Ajax

Cómo configurar la función de llamada Ajax

Si no sabe cómo configurar la función de llamada Ajax, siga este proceso:

1. Haga que la solicitud funcione en Postman.

NotaSi no funciona ni siquiera con Postman, significa que no puede hacer que funcione con la función de llamada de Ajax.

1. Cuando funcione, haga clic en el botón Código.

2. Seleccione el idioma de programación con el que trabaja.

NotaPuede 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 jQuery.ajax(). En la casilla verde, observa el código generado por Postman.

Solución de problemasSolución de problemas y soporte

PUBLICPÚBLICO 27

Page 28: 363n de problemas

2. Utilice este código en la función de llamada de Ajax.Copie y pegue este código en Desktop Studio y ajuste el código si es necesario. Para obtener más información, consulte: call.

function getCall(success, error, localData){ var result; var url = localData.fetchAPI = ""; //API call to get csrf token and cookies ctx.ajax.call({ method: e.ajax.method.get, url: url, contentType: e.ajax.content.json, headers: { 'Authorization': localData.auth, 'x-csrf-token' : 'fetch', 'Cookie' : 'fetch', 'Accept' : 'application/json' }, ignoreClientCertificate: localData.clientCert, success: function(res, status, xhr) { if(res.d){ result = xhr; success(result); } else { result = res; error(result); } }, error: function(xhr, error, statusText) { result = res; error(result); } });

Cómo lidiar con problemas de llamadas de Ajax

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:

1. Pruebe ctx.ajax.call con la opción ignoreClientCertificate como verdadera.

NotaSi aún no funciona, verifique el código de error, que puede llevarle al origen del error.

.2. Modifique las opciones en Postman.

28PUBLICPÚBLICO

Solución de problemasSolución de problemas y soporte

Page 29: 363n de problemas

De forma predeterminada, la Verificación del certificado SSL no se permite en Postman. Esto significa que se fuerza la llamada incluso si el certificado no está disponible.Si la llamada a Postman no funciona después de activar esta opción, significa que este certificado es obligatorio para realizar la llamada. Como se ha indicado anteriormente, la llamada de Ajax no tiene esta opción.Una solución podría ser utilizar cURL.

3. Pruebe el código cURL proporcionado por Postman.○ Siga el proceso anterior Cómo configurar mi proceso de función de llamada de Ajax, del paso 1.a. al

paso 1.b., para recuperar el código cURL adecuado.

Solución de problemasSolución de problemas y soporte

PUBLICPÚBLICO 29

Page 30: 363n de problemas

○ En este código, elimine todos los caracteres \ y sustituya todas las comillas simples por comillas dobles.

○ Ejecute el código cURL en la petición de comandos.Ejemplo:

curl --location --request GET "http://XXXX"

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.

var cmdCurl = 'curl -k --location --request GET "http://XXXX" ctx.exec(cmdCurl, 60, function(reqres) { var reqdata = ctx.json.parse(reqres.output);

30PUBLICPÚBLICO

Solución de problemasSolución de problemas y soporte

Page 31: 363n de problemas

});

NotaLa opción -k se utiliza para ignorar los certificados de cliente.

1.2.4 Prácticas recomendadas para gestionar una cantidad importante de datos al ejecutar un escenario

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:

... // during scenario execution sc.data.bigData = ctx.fso.file.open(theBigFile); ... // last step before ending the scenario sc.data.bigData = undefined; sc.endStep();

1.2.5 Buenas prácticas para captchas

A veces puede encontrarse con captchas cuando desea automatizar un sitio web.

Puede gestionarlos de dos maneras:

● 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.

Solución de problemasSolución de problemas y soporte

PUBLICPÚBLICO 31

Page 32: 363n de problemas

1.2.6 Prácticas recomendadas para la automatización de pantallas SAP GUI con jerarquías bajas

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

1. Ejecute la acción de pulsación en la pantalla capturada con la tabla.Aparece la primera ventana emergente.

32PUBLICPÚBLICO

Solución de problemasSolución de problemas y soporte

Page 33: 363n de problemas

2. Haga clic en Continuar.Aparece la segunda ventana emergente.

3. Haga clic en Sustituir.

Resultado

Se abre la tabla y se guarda en el archivo Excel.

Solución de problemasSolución de problemas y soporte

PUBLICPÚBLICO 33

Page 34: 363n de problemas

1.2.7 Mejores prácticas para gestionar archivos

Esta sección proporciona las mejores prácticas para gestionar archivos.

Archivo de configuración que funciona para distintos usuarios y equipos

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 // this will create a folder 'Config' under 'Desktop\Automation\ProjetName' only if this folder does not exist var configFile =ctx.fso.folder.getSpecialFolder(e.shell.specialFolder.Desktop) + "\\Automations\\"+ ctx.options.projectName + "\\config"; if (!configFile.exist){ ctx.fso.folder.create(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 //this will create a file 'TempFiles' in your project folder ctx.fso.folder.create(ctx.options.path.log+"\\TempFiles\\")

Gestionar la ruta de carpetas mediante variables de Factory

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.

34PUBLICPÚBLICO

Solución de problemasSolución de problemas y soporte

Page 35: 363n de problemas

Para obtener más información sobre las variables de Cloud Factory, consulte la sección Declaring Environment Variables from SAP Intelligent RPA Factory.

Código de ejemplo var mypath; // ---------------------------------------------------------------- // Step: get_path_var // ---------------------------------------------------------------- GLOBAL.step({ get_path_var: function(ev, sc, st) { var rootData = sc.data; ctx.workflow('Custom_getPathVar', 'c514ca1b-3d9d-445b-a2e3-069c9a7b9397') ; // Describe functionality to be implemented in JavaSript later in the project. // Declare setting path ctx.setting({ MyPath: { comment: "sc.localData.mytenant", server: true }}); // Get setting ctx.settings.MyPath.get(function(code, label, setting) { if (code == e.error.OK) { // get value from setting.value mypath = setting.value; ctx.log(mypath); } else{ ctx.log('Error during setting retrieval'); sc.endStep(); // pSapGlobalCloud8L_man return; } sc.endStep(); // code_ return; }); }});

Solución de problemasSolución de problemas y soporte

PUBLICPÚBLICO 35

Page 36: 363n de problemas

Archivos de salida

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 //this will create a folder 'output' under the path 'Desktop\Automations\ProjectName' ctx.fso.folder.create(ctx.fso.folder.getSpecialFolder(e.shell.specialFolder.Desktop) + "\\Automations\\"+ ctx.options.projectName + "\\output")

1.2.8 Prácticas recomendadas para la extensión de Chrome

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.

36PUBLICPÚBLICO

Solución de problemasSolución de problemas y soporte

Page 37: 363n de problemas

● Cuando quiera capturar páginas de una aplicación, verá que la misma página aparece dos veces en el panel Capturar página.

● Cuando se inicia la aplicación web en el navegador Chrome, no se reconocen la página ni la aplicación.

Solución de problemasSolución de problemas y soporte

PUBLICPÚBLICO 37

Page 38: 363n de problemas

● Este problema se resuelve actualizando la página manualmente. Cuando se reconoce la página, verá que la misma página aparece dos veces.

Desactivar una de las extensiones

1. Introduzca chrome://extensions/ en la barra de búsqueda de Google.Observará que tiene dos extensiones de SAP Intelligent RPA para mosaicos de Chrome.

38PUBLICPÚBLICO

Solución de problemasSolución de problemas y soporte

Page 39: 363n de problemas

2. Verifique las versiones de las extensiones y desactive la que tenga la versión más antigua.

Información relacionada

Configuración de navegadores web

1.2.9 Mejores prácticas para gestionar la ventana emergente Servidor ocupado

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

● Workflow bloqueado. El proceso se bloquea y no se procesa nada después.● La ventana emergente Servidor ocupado a menudo no se puede cerrar.● La mayoría de las veces, el systray de agente ya no reacciona.● Para detener el agente, es necesario detener el proceso.● A veces, la ventana emergente Servidor ocupado puede desaparecer después de un tiempo y, a

continuación, continuar el proceso.

Solución de problemasSolución de problemas y soporte

PUBLICPÚBLICO 39

Page 40: 363n de problemas

Origen

La ventana de diálogo Servidor ocupado se inicia cuando

● 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 (ctxtrun.exe), 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 (item.wait())○ 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

RecordatorioEn 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.

Aunque solicite ayuda, le pediremos que proporcione dicha información.

Le recomendamos encarecidamente que utilice traces de proyecto para ello; consulte el artículo de la base de conocimientos de SAP 2776434 .

Cómo verificar la ventana emergente Servidor ocupado es de tipo conector● Identifique el evento que lleva a la ventana emergente en su workflow y todas las acciones circundantes,

utilizando finalmente traces de proyecto. Consulte el artículo de la base de conocimientos de SAP 2776434 .

40PUBLICPÚBLICO

Solución de problemasSolución de problemas y soporte

Page 41: 363n de problemas

○ Un clic en un botón○ La CARGA de una página específica○ Llamada de un script en una página○ Descarga de un archivo○ …

● Iniciar el depurador sin iniciar ningún workflow● Replicar manualmente la acción que habría realizado el workflow justo antes de la aparición de esta

ventana emergente● Si no aparece nada, el conector no desencadena este problema

○ Significa que la espera o la CARGA en las actividades de las páginas no son las que desencadenan esta ventana emergente.

○ Es seguro esperar a esas páginas y la causa probable del problema debería estar relacionada con las acciones solicitadas por el agente.

● Si aparece la ventana emergente Servidor ocupado:○ Si la aplicación se captura con tecnología UIAutomation, consulte la subsección Tipo conector de la

sección Solución y solución provisional.○ De lo contrario, abra un incidente en el componente CA-ML-IPA. Será un posible bloqueador.

Cómo verificar la ventana emergente Servidor ocupado es de tipo SDK● Identifique el evento que lleva a la ventana emergente en su workflow y todas las acciones circundantes,

utilizando finalmente traces de proyecto. Consulte el artículo de la base de conocimientos de SAP 2776434 .○ Un clic en un botón○ La CARGA de una página específica○ Llamada de un script en una página○ Descarga de un archivo○ …

● Iniciar el depurador sin iniciar ningún workflow● Copiar y pegar acciones (acciones específicas y acciones circundantes) del workflow que parece llevar a

este problema○ Deshacerse de cada actividad de escenario (endStep, endScenario, return, gestión de datos…)○ A menudo se verá como un clic en un elemento que lleva a un programa de control de espera de

página o LOAD, que conduce a una acción específica como otro clic o sondeo de elementos o ejecución de script personalizado.

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:

● Sondeo personalizado en una página (ctx.polling)● Sondeo de elementos (app.page.myElement.wait)● UIAutomation refresh()● execscript web

Hay actividades que no solicitarán dicho feedback y que deberían ayudar a encontrar una solución o solución alternativa:

● Utilizar la espera en una página tanto como sea posible○ En un elemento debe existir una espera larga para evitar el sondeo de elementos (item.wait)

Solución de problemasSolución de problemas y soporte

PUBLICPÚBLICO 41

Page 42: 363n de problemas

● lockRefresh/unlockRefresh de UIAutomation para evitar que el conector inunde la aplicación

Solución y solución provisional

Tener una aplicación optimizada [página 62] 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.

Esto limitará la presión sobre una posible aplicación compleja.

NotaLas 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. (ctx.polling/app.page.element.wait)

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 item.wait 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.

Debe existir/No debe existir (optimización pasiva)

Tener demasiados elementos Debe existir/No debe existir elevará el coste del reconocimiento de páginas. Tendrá un impacto directo en la disponibilidad de la aplicación y en la apariencia de la ventana emergente. Así pues, se recomienda limitar su número en la medida de lo posible.

Optimización activa de GUI

42PUBLICPÚBLICO

Solución de problemasSolución de problemas y soporte

Page 43: 363n de problemas

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 resetBusyWaitTimeLa 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 BusyEl 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.

SAPLOGON.pEasyAccess.setBusyWaitTime(//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 unlockRefreshUIAutomation 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).Estas actualizaciones pueden tardar un tiempo en procesarse y el mecanismo de sondeo puede inundar la aplicación.Al realizar una acción durante un sondeo, se puede generar una ventana emergente ocupada por el servidor.No hay manera de ralentizar el mecanismo de sondeo con tecnología GUI (a diferencia de UIAutomation).

Solución de problemasSolución de problemas y soporte

PUBLICPÚBLICO 43

Page 44: 363n de problemas

Estas dos funciones se utilizan para evitar que el conector actualice el contenido de la página desde el punto de vista del agente. Permitirá tener tiempo para realizar acciones mientras se evita la aplicación gestionada por inundaciones.Utilícelo dentro de un receptor de espera cuando sepa que la página está cargada correctamenteapp.page.wait(function(ev) {app.page.lockRefresh();// >>> perform actions <<<app.page.unlockRefresh();});No olvide UnlockRefresh al final del paso porque el conector no verá los siguientes eventos como nueva llegada de página.

NotaEl 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

● Si el SDK no genera la ventana emergente:○ Intente incluir la página con las funciones de bloqueo y desbloqueo de actualización. Compruebe si no

se ha producido el error de trabajo del servidor. (vea cómo hacerlo en lockRefresh y unlockRefresh)○ Cuando aparezca la ventana emergente de servidor ocupado, espere unos segundos para ver si la

ventana emergente desaparece automáticamente y continúa la ejecución del bot. En ese caso, puede que no sea un bloqueador.

○ Desactivar el sondeo automático○ En Studio, vaya a la página > parámetros > defina refreshmode= no.

44PUBLICPÚBLICO

Solución de problemasSolución de problemas y soporte

Page 45: 363n de problemas

● Este modo impedirá la actualización automática de la página. Incluso si se modifica la página (nuevo contenido, nuevos elementos), esas actualizaciones no se verán automáticamente.

● Llame mainpage.update o page.update en el estado de actualización de código de la aplicación desde el punto de vista del agente siempre que espere una actualización desde la página.

1.2.10 Eventos asincrónicos en bucles For

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.

Llamadas API en un bucle For

El siguiente ejemplo demuestra el comportamiento de realizar llamadas API en un bucle For:

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.

Solución de problemasSolución de problemas y soporte

PUBLICPÚBLICO 45

Page 46: 363n de problemas

En el depurador puede ver que el último mensaje de log se imprime antes que los resultados de todas las llamadas API. Esto se debe al uso del bucle For. El bucle For no espera hasta el final de la ejecución del evento asincrónico para realizar la siguiente iteración. Después de todas las iteraciones se llama el método sc.endStep() para que se ejecute el siguiente paso. Sin embargo, este último paso se ejecuta antes de que todas las llamadas API hayan finalizado su ejecución. Ese es el motivo por el que todos los logs no están en el depurador en el orden correcto previsto.

Llamadas API con actividades de buclePara evitar este comportamiento durante la ejecución de su bot debe utilizar las actividades de bucle disponibles en Desktop Studio. Estas actividades garantizan que el siguiente paso se ejecute después del final de un evento asincrónico.

Puede añadir directamente estas actividades de buble al editor workflow del Desktop Studio. El ejemplo anterior se puede transformar de la siguiente manera:

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.

46PUBLICPÚBLICO

Solución de problemasSolución de problemas y soporte

Page 47: 363n de problemas

De este modo, la implementación de actividades de bucle garantiza que todos los pasos se ejecuten en el orden correcto.

Actividad de espera en un bucleEl siguiente ejemplo muestra el comportamiento de la ejecución de la actividad de espera en un bucle:

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.

Solución de problemasSolución de problemas y soporte

PUBLICPÚBLICO 47

Page 48: 363n de problemas

Actividad de espera con actividades de bucle

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.

1.3 Cloud Factory

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

1.3.1 Alcance insuficiente

El error de alcance insuficiente aparece cuando se intenta acceder al servicio de SAP Intelligent RPA Factory.

48PUBLICPÚBLICO

Solución de problemasSolución de problemas y soporte

Page 49: 363n de problemas

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

1. En la pestaña Seguridad de su subcuenta, vaya a Colecciones de roles.

NotaDebe tener el rol Administrador de seguridad para acceder a la pestaña Seguridad en el cockpit de SAP BTP (Business Technology Platform).

2. Cree una Nueva colección de roles.

3. Haga clic en la colección de roles que acaba de crear y seleccione Añadir rol.

Solución de problemasSolución de problemas y soporte

PUBLICPÚBLICO 49

Page 50: 363n de problemas

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.

Asignar roles a usuarios

NotaRepita esta operación para todos:

● 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).

1. Vaya a Configuración de confianza y haga clic en SAP ID Service.

50PUBLICPÚBLICO

Solución de problemasSolución de problemas y soporte

Page 51: 363n de problemas

2. Introduzca la dirección de correo electrónico de su usuario y haga clic en Mostrar asignación. Si es necesario, haga clic en Añadir usuario.

3. Haga clic en Asignar colección de roles y seleccione el rol necesario.

Solución de problemasSolución de problemas y soporte

PUBLICPÚBLICO 51

Page 52: 363n de problemas

1.4 Cloud Studio

● 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

1.4.1 Asignación de funcionalidades de Cloud Studio y Desktop Studio

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.

En Desktop Studio, Contexto >Crear carpeta = En Cloud Studio, Parámetros de entrada/salida.

52PUBLICPÚBLICO

Solución de problemasSolución de problemas y soporte

Page 53: 363n de problemas

Puede tener el tipo de datos de lista. En Cloud Studio, debe marcar la casilla de selección Lista para que el tipo se muestre como una matriz (por ejemplo, una lista).

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).

1.4.2 Definir el control "Para cada" para elementos sin cuadro de límite

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.

Para resolver esta limitación, puede utilizar la actividad Script personalizado.

Definir el control "Para cada" para elementos sin cuadros de límite

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.

Solución de problemasSolución de problemas y soporte

PUBLICPÚBLICO 53

Page 54: 363n de problemas

3. Seleccione una salida de tipo Cualquiera.

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).

54PUBLICPÚBLICO

Solución de problemasSolución de problemas y soporte

Page 55: 363n de problemas

5. Añada el control Para cada a su automatización.6. En el panel lateral Para cada, seleccione la salida fijada anteriormente como entrada en el campo Fijar lista

de bucle.

Ahora puede utilizar el control Para cada.

Para obtener más información, consulte Para cada.

1.4.3 Desbloquear una sesión bloqueada durante la ejecución de automatización

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.

Solución de problemasSolución de problemas y soporte

PUBLICPÚBLICO 55

Page 56: 363n de problemas

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.

Para obtener más información, consulte Cómo configurar un bot no asistido.

1.4.4 Iniciar SAPlogon en modo no asistido

Requisitos previos

Ha creado variables de entorno en un proyecto tal como se describe en Variables de entorno.

Ha creado una o varias automatizaciones en Cloud Studio, tal como se describe en Crear una automatización.

Contexto

Puede iniciar la aplicación SAPlogon con un bot no asistido utilizando la actividad de script personalizada, las variables de entorno y el desencadenador programado.

El siguiente caso de utilización muestra cómo iniciar la aplicación SAPlogon en modo no asistido.

56PUBLICPÚBLICO

Solución de problemasSolución de problemas y soporte

Page 57: 363n de problemas

Procedimiento

1. En su automatización, en el panel de la derecha, vaya a la sección Controles.2. Arrastre y suelte la actividad Script personalizado en su workflow.

3. Seleccione Script personalizado y haga clic en Editar script.

4. Añada las variables que desea utilizar en el script para que, al escribir el script, se vinculen esas variables con los valores de entrada. Debe utilizar el sistema, el cliente, el usuario y la contraseña como valores de entrada. Para el valor de entrada contraseña, especifique el tipo "contraseña" para proteger su contraseña.

5. Escriba la siguiente línea dentro del script:

irpa_core.core.shellexec(‘sapshcut.exe’, ‘-system=’ + system + ‘ -client=’ + client + ‘ -user=’ + user + ‘ -pw=’ + password);

Esta línea hace que el SAPlogon se lance e inicie sesión con el sistema, el cliente, el usuario y la contraseña que ha especificado. Concatene sus variables en la línea que ejecuta la automatización en un shell.

Solución de problemasSolución de problemas y soporte

PUBLICPÚBLICO 57

Page 58: 363n de problemas

6. Añada las variables a la actividad Script personalizado. Para cada parámetro de entrada, escriba el nombre de la variable y haga clic en la variable que sugiere la E azul antes. Haga clic en la cruz para cerrar la pestaña de edición.

Resultados

Ahora ha finalizado la automatización de SAPlogon y ya puede configurar el entorno para que la lance en modo no asistido.

58PUBLICPÚBLICO

Solución de problemasSolución de problemas y soporte

Page 59: 363n de problemas

Pasos siguientes

1. Ahora que ha terminado de diseñar su proyecto, debe crear un paquete para añadir el proyecto a su entorno. Para obtener más información, consulte Generar paquetes.

2. Una vez generado el paquete, añádalo a su entorno. Para obtener más información, consulte Añadir paquetes a un entorno.

También puede fijar valores para variables de entorno al desplegar un paquete en el entorno. Para obtener más información, consulte Variables de entorno desde Cloud Studio.

Solución de problemasSolución de problemas y soporte

PUBLICPÚBLICO 59

Page 60: 363n de problemas

3. Añada un desencadenador para definir cómo y cuándo se ejecutará el job de automatización. Para obtener más información, consulte Añadir desencadenadores a un entorno.

Puesto que desea ejecutar la automatización en modo no asistido, debe seleccionar el tipo de desencadenador Programado. Para obtener más información, consulte Añadir un desencadenador programado.

60PUBLICPÚBLICO

Solución de problemasSolución de problemas y soporte

Page 61: 363n de problemas

4. Una vez que haya terminado de configurar el desencadenador, haga clic en el botón (Más opciones...) del mosaico del desencadenador y seleccione Ejecutar ahora.

NotaDebe seleccionar su agente en modo No asistido directamente en la bandeja del sistema del agente. La primera vez que lance el bot, puede aparecer la siguiente ventana de diálogo.

Marque la casilla de selección Recordar mi decisión y haga clic en el botón Permitir para que no se vuelva a visualizar la ventana de diálogo.

Solución de problemasSolución de problemas y soporte

PUBLICPÚBLICO 61

Page 62: 363n de problemas

1.4.5 Mejores prácticas para optimizar un elemento

En esta sección se describen las mejores prácticas para optimizar un elemento.

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.

NotaEl reconocimiento de su aplicación y de un elemento es tan importante como el desarrollo de su workflow. Si no se hace correctamente, es posible que la automatización no funcione correctamente.

Esto incluye cosas como:

● Utilizar los criterios más exclusivos para cada página y elemento.● Asegurarse de que el conector ve el elemento como unívoco (por ejemplo, utilizando el depurador).

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.

Estas pruebas pueden ayudarnos a saber si se debe hacer o no una optimización.

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.

62PUBLICPÚBLICO

Solución de problemasSolución de problemas y soporte

Page 63: 363n de problemas

Número de pruebas

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.

NotaDependiendo 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.

Debe ser conocido por el desarrollador antes de hacer cualquier desarrollo.

Número de elementos en una página

La optimización también está relacionada con el número de elementos reconocidos en su página.

Solución de problemasSolución de problemas y soporte

PUBLICPÚBLICO 63

Page 64: 363n de problemas

No hay un máximo de elementos por página, pero la práctica recomendada sería tener solo elementos útiles:

● Interacción con entradas durante la automatización● Elementos utilizados para el reconocimiento avanzado (Anterior, Debe existir, No debe existir, etc.)

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.

Si un elemento debe optimizarse, siga los métodos de reconocimiento avanzados.

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.

1.4.6 Cómo funcionan las pruebas

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.

A partir de la versión 2.0.20 de Agent, se han introducido mejoras:

64PUBLICPÚBLICO

Solución de problemasSolución de problemas y soporte

Page 65: 363n de problemas

● Antes de esta versión, cualquier modificación de los stakeholders del proyecto requiere que Agente se reinicie por completo.

● Con esta versión, una modificación en una automatización no requerirá el reinicio completo Agent. El tiempo de espera entre dos pruebas se reducirá significativamente.

Sin embargo, para garantizar la estabilidad e integridad del proyecto:

● 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.

1.4.7 Ejecutar una automatización desde otra automatización

En esta guía se explica cómo ejecutar una automatización concreta mientras se ejecuta otra en Cloud Studio. Existen dos posibilidades: mediante una dependencia directa o mediante un desencadenador de API.

Mediante dependencia directa

Esta es la opción recomendada, ya que es la más fácil de implementar.

Por ejemplo, supongamos que desea ejecutar la "automatización 1" desde el "paquete 1" en la "automatización 2".

1. Vaya a la pestaña Paquetes de Cloud Factory2. Busque el "paquete 1" y compártalo haciendo clic en el

Solución de problemasSolución de problemas y soporte

PUBLICPÚBLICO 65

Page 66: 363n de problemas

NotaDebe 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.

66PUBLICPÚBLICO

Solución de problemasSolución de problemas y soporte

Page 67: 363n de problemas

Encontrará más información en la página de Dependencias.

Mediante desencadenador de API

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 Cómo ejecutar un desencadenador de API.

Solución de problemasSolución de problemas y soporte

PUBLICPÚBLICO 67

Page 68: 363n de problemas

Limitaciones de responsabilidad y aspectos legales

HiperenlacesAlgunos 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.

Vídeos alojados en plataformas externasAlgunos vídeos pueden dirigir a plataformas de hospedaje de vídeos de terceros. SAP no puede garantizar la disponibilidad futura de vídeos almacenados en estas plataformas. Además, cualquier anuncio u otro contenido alojado en estas plataformas (p. ej., vídeos sugeridos o la navegación a otros vídeos alojados en el mismo sitio), no se encuentra bajo el control o la responsabilidad de SAP.

Beta y otras funciones experimentalesLas funciones experimentales no forman parte del alcance de la entrega oficial que SAP garantiza para futuras versiones. Esto significa que SAP puede modificar las funciones experimentales en cualquier momento, por cualquier motivo y sin previo aviso. Las funciones experimentales no están previstas para su uso productivo. No podrá mostrar, probar, examinar, evaluar las funciones experimentales o realizar cualquier otro uso de ellas en un entorno operativo en directo o con datos que no estén suficientemente fundamentados.El propósito de las funciones experimentales es obtener de manera anticipada comentarios que permitan a los clientes y partners influir en el producto futuro en consecuencia. Al proporcionar su opinión (p. ej. en la Comunidad SAP), acepta que los derechos de propiedad intelectual de las contribuciones o de las tareas derivadas seguirán siendo propiedad exclusiva de SAP.

Código de ejemploCualquier 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.

Lenguaje sin sesgosSAP apoya una cultura de diversidad e inclusión. Siempre que sea posible, utilizamos un lenguaje imparcial en nuestra documentación para referirnos a personas de todas las culturas, etnias, géneros y habilidades.

68PUBLICPÚBLICO

Solución de problemasLimitaciones de responsabilidad y aspectos legales

Page 69: 363n de problemas

Solución de problemasLimitaciones de responsabilidad y aspectos legales

PUBLICPÚBLICO 69

Page 70: 363n de problemas

www.sap.com/contactsap

© 2022 SAP SE o una empresa filial de SAP. Reservados todos los derechos.

Queda prohibida la reproducción o transmisión de cualquier parte de esta publicación, en cualquier forma o para cualquier fin, sin el permiso expreso de SAP SE o de una empresa filial de SAP. La información que aquí se incluye puede modificarse sin previo aviso.

Algunos productos de software comercializados por SAP SE y sus distribuidores contienen componentes de software con derechos de autor de otros proveedores de software. Las especificaciones de productos en cada país pueden ser diferentes.

SAP SE o una empresa filial de SAP SE proporcionan estos materiales con fines meramente informativos, sin manifestación ni garantía de ningún tipo. Ni SAP SE ni sus empresas filiales se hacen responsables de los errores u omisiones en relación con los materiales. Las únicas garantías para los productos y servicios de SAP SE o de sus empresas filiales son aquellas especificadas en las cláusulas expresas de garantía que acompañan a dichos productos y servicios, si las hubiera. Nada de lo que se incluye en este documento debe interpretarse como garantía adicional.

SAP y los productos y servicios de SAP mencionados, así como sus respectivos logotipos, son marcas comerciales o marcas registradas de SAP SE (o de una empresa filial de SAP) en Alemania y en otros países. Todos los nombres y servicios de productos son las marcas comerciales de sus respectivas empresas.

Consulte https://www.sap.com/spain/about/legal/trademark.html para obtener información y avisos adicionales sobre marcas comerciales.

THE BEST RUN