Symptôme
Un script qui peut être exécuté avec succès en mode assisté ne s’exécute pas correctement en mode sans assistance.
Elle échoue généralement avec un message tel que : « Un problème s’est produit lors de l’exécution de l’action « Cliquer ». Impossible de cliquer sur le lien sur la page web. »
Cause
Les échecs classiques dans les exécutions sans assistance sont dus à l’une des causes suivantes :
-
Script non testé en mode assisté avant de passer au mode sans assistance
-
Configuration différente utilisée par la session sans assistance
-
Un autre compte Windows utilisé par l’exécution sans assistance que celui utilisé pour créer le flux
-
Résolution d’écran (voir comment modifier la résolution de l’écran)
-
Configuration du navigateur
-
Utilisateur
-
Bloqueur de fenêtres contextuelles
-
Extensions (manquantes/non activées)
-
-
-
Les écrans ne sont pas entièrement chargés (retards manquants)
-
Une invite UAC qui bloque l’automatisation de l’interface utilisateur au début de la session
Solution
Comme il peut y avoir des causes différentes, la solution ci-dessous décrit comment ajouter des captures d’écran avant et après une action d’échec pour obtenir des commentaires visuels. Si vous examinez attentivement les captures d’écran après une défaillance de script sans assistance, vous pouvez trouver l’une des causes répertoriées ci-dessus. Il décrit également comment comparer les paramètres de résolution d’affichage et de mise à l’échelle.
Si vous avez déjà des captures d’écran dans votre flux et qu’elles ne parviennent pas à s’exécuter, une boîte de dialogue Contrôle de compte d’utilisateur (UAC) peut bloquer l’exécution de votre flux. Connectez-vous à la machine qui reproduit le problème avec le compte que vous utilisez pour exécuter le flux et vérifiez si vous disposez d’une boîte de dialogue bloquante. Si vous le faites, modifiez votre routine de démarrage pour éviter que cela ne se produise.
Ajout de captures d’écran pour résoudre les problèmes
Commencez par vous connecter à l’ordinateur qui reproduit le problème avec le compte que vous utilisez dans votre connexion. Vérifiez qu’aucune invite de contrôle d’utilisateur ne bloque l’automatisation de l’interface utilisateur.
Si rien ne bloque l’automatisation de l’interface utilisateur, prendre une capture d’écran avant et après une étape défaillante en mode sans assistance peut vous aider à obtenir des commentaires visuels.
L’étape d’échec doit se poursuivre en cas d’échec afin qu’une capture d’écran puisse être effectuée après l’échec.
1- Recherchez l’action « Effectuer une capture d’écran »
2- Glisser-déplacer l’action « Prendre une capture d’écran » côté script
3- Modifiez l’action, utilisez « Fichier » au lieu du Presse-papiers et « avant » dans l’emplacement du nom de fichier
4- Ensuite, copiez/collez et modifiez le nom du fichier de capture d’écran avec après dans celui-ci
5- Entourer l’étape défaillante des captures d’écran
6- Modifier le comportement onError de l’étape d’échec
6a - Modifiez l’étape et cliquez sur « onError » en bas
6b - Définissez l’exécution du flux sur « Continuer l’exécution du flux » et « Passer à l’action suivante »
7 - Enregistrez, exécutez localement pour tester que des captures d’écran sont produites et relancez une exécution sans assistance.
8- Vérifiez les fichiers de capture d’écran sans assistance .
Vérifier la résolution de l’écran et les différences de mise à l’échelle
Pour comparer les paramètres de résolution entre les exécutions suivies et les exécutions sans assistance, ajoutez les actions ci-dessous dans votre script avant d’exécuter dans les deux modes :
-
Copiez/collez l’extrait de code ci-dessous dans un concepteur PAD : cela crée les étapes nécessaires pour capturer les paramètres de résolution et les générer dans un fichier horodaté.
DateTime.GetCurrentDateTime.Local DateTimeFormat: DateTime.DateTimeFormat.DateAndTime CurrentDateTime=> CurrentDateTime
Text.ConvertDateTimeToText.FromCustomDateTime DateTime: CurrentDateTime CustomFormat: $'''yyyy_MM_dd_hh_mm_ss''' Result=> FormattedDateTime
Workstation.GetScreenResolution MonitorNumber: 1 MonitorWidth=> MonitorWidth MonitorHeight=> MonitorHeight MonitorBitCount=> MonitorBitCount MonitorFrequency=> MonitorFrequency
@@copilotGeneratedAction: 'False'
Scripting.RunPowershellScript.RunPowershellScript Script: $'''Add-Type @\'
using System;
using System.Runtime.InteropServices;
using System.Drawing;
public class DPI {
[DllImport(\"gdi32.dll\")]
static extern int GetDeviceCaps(IntPtr hdc, int nIndex);
public enum DeviceCap {
VERTRES = 10,
DESKTOPVERTRES = 117
}
public static float scaling() {
Graphics g = Graphics.FromHwnd(IntPtr.Zero);
IntPtr desktop = g.GetHdc();
int LogicalScreenHeight = GetDeviceCaps(desktop, (int)DeviceCap.VERTRES);
int PhysicalScreenHeight = GetDeviceCaps(desktop, (int)DeviceCap.DESKTOPVERTRES);
return (float)PhysicalScreenHeight / (float)LogicalScreenHeight;
}
}
\'@ -ReferencedAssemblies \'System.Drawing.dll\' -ErrorAction Stop
Return [DPI]::scaling() * 100''' ScriptOutput=> MonitorScaleOutput
File.WriteText File: $'''c:\\test\\resolution_%FormattedDateTime%.txt''' TextToWrite: $'''height: %MonitorHeight% width: %MonitorWidth% frequency: %MonitorFrequency% bitCount: %MonitorBitCount% scale: %MonitorScaleOutput%''' AppendNewLine: True IfFileExists: File.IfFileExists.Overwrite Encoding: File.FileEncoding.Unicode
-
Passez en revue le chemin du fichier de sortie de la dernière action, case activée que l’exécution locale est réussie et enregistrez.
-
Exécutez le script en mode assisté et sans assistance, puis case activée si la sortie de résolution et de mise à l’échelle ont les mêmes valeurs dans les deux modes.
Remarque
Comme mentionné ci-dessus, si l’action des captures d’écran elle-même échoue, une boîte de dialogue contrôle de compte d’utilisateur (UAC) peut bloquer l’exécution de votre flux. Connectez-vous à la machine qui reproduit le problème avec le compte que vous utilisez pour exécuter le flux et vérifiez si vous disposez d’une boîte de dialogue bloquante. Si vous le faites, modifiez votre routine de démarrage pour éviter que cela ne se produise.
Si le script comporte d’autres étapes, il peut échouer après, car le comportement a été modifié pour ne pas générer d’erreurs afin que nous puissions prendre une capture d’écran. Par conséquent, les échecs après la deuxième capture d’écran doivent être ignorés.
Une fois le problème compris et résolu, restaurez le comportement d’origine de votre flux pour générer des erreurs.