Symptom
Ein Skript, das im beaufsichtigten Modus erfolgreich ausgeführt werden kann, wird im unbeaufsichtigten Modus nicht erfolgreich ausgeführt.
In der Regel tritt ein Fehler mit einer Meldung wie: "Es gab ein Problem beim Ausführen der Aktion 'Klicken'. Auf den Link konnte auf der Webseite nicht geklickt werden."
Ursache
Typische Fehler bei unbeaufsichtigten Ausführungen werden durch eine der folgenden Ursachen verursacht:
-
Skript nicht im beaufsichtigten Modus getestet, bevor es zu unbeaufsichtigt wechselt
-
Andere Konfiguration, die von der unbeaufsichtigten Sitzung verwendet wird
-
Ein anderes Windows-Konto, das von der unbeaufsichtigten Ausführung verwendet wird, als das zum Erstellen des Flows verwendet wurde.
-
Bildschirmauflösung (siehe Ändern der Bildschirmauflösung)
-
Browserkonfiguration
-
Benutzer
-
Popupblocker
-
Erweiterungen (fehlend/nicht aktiviert)
-
-
-
Bildschirme werden nicht vollständig geladen (fehlende Verzögerungen)
-
Eine UAC-Eingabeaufforderung, die die Benutzeroberflächenautomatisierung blockiert, wenn die Sitzung beginnt
Lösung
Da es unterschiedliche Ursachen geben kann, beschreibt die folgende Lösung, wie Screenshots vor und nach einer fehlgeschlagenen Aktion hinzugefügt werden, um visuelles Feedback zu erhalten. Wenn Sie sich die Screenshots nach einem unbeaufsichtigten Skriptfehler sorgfältig ansehen, können Sie eine der oben aufgeführten Ursachen finden. Außerdem wird beschrieben, wie Sie die Anzeigeauflösung und die Skalierungseinstellungen vergleichen.
Wenn Sie bereits Screenshots in Ihrem Flow haben und diese nicht ausgeführt werden können, haben Sie möglicherweise ein Dialogfeld für die Benutzerkontensteuerung (User Account Control, UAC), das die Ausführung Ihres Flows blockiert. Melden Sie sich bei dem Computer an, der das Problem mit dem Konto, das Sie zum Ausführen des Flows verwenden, reproduziert, und überprüfen Sie, ob ein solches Blockierungsdialogfeld vorhanden ist. Ändern Sie in diesem Fall Ihre Startroutine, um dies zu verhindern.
Hinzufügen von Screenshots zur Problembehandlung
Melden Sie sich zunächst bei dem Computer an, der das Problem mit dem Konto reproduziert, das Sie in Ihrer Verbindung verwenden. Stellen Sie sicher, dass keine UAC-Eingabeaufforderung vorhanden ist, die die Benutzeroberflächenautomatisierung möglicherweise blockiert.
Wenn es nichts gibt, das die Benutzeroberflächenautomatisierung blockieren würde, erstellen Sie vor und nach einem fehlerhaften Schritt im unbeaufsichtigten Modus einen Screenshot, um visuelles Feedback zu erhalten.
Der fehlerhafte Schritt sollte bei einem Fehler fortgesetzt werden, damit nach dem Fehler ein Screenshot erstellt werden kann.
1. Suchen Sie nach der Aktion "Screenshot erstellen"
2- Ziehen und Ablegen der Aktion "Screenshot erstellen" auf die Skriptseite
3- Bearbeiten Sie die Aktion, verwenden Sie "Datei" anstelle der Zwischenablage und "vor" im Dateinamenspeicherort
4- Kopieren/Einfügen und ändern Sie den Namen der Screenshotdatei mit nach darin
5. Schließen Sie den fehlerhaften Schritt mit den Screenshots ein.
6. Ändern des onError-Verhaltens des fehlerhaften Schritts
6a- Bearbeiten Sie den Schritt, und klicken Sie unten auf "onError".
6b: Legen Sie die Flowausführung auf "Flowausführung fortsetzen" und "Zur nächsten Aktion wechseln" fest.
7- Speichern,lokal ausführen , um zu testen, dass Screenshots erstellt werden, und starten Sie eine unbeaufsichtigte Ausführung neu.
8- Überprüfen Sie die unbeaufsichtigten Screenshotdateien.
Überprüfen von Bildschirmauflösung und Skalierungsunterschieden
Um die Auflösungseinstellungen zwischen der ausführung der beaufsichtigten und der unbeaufsichtigten Ausführung zu vergleichen, fügen Sie dem Skript die folgenden Aktionen hinzu, bevor Sie in beiden Modi ausgeführt werden:
-
Kopieren/Einfügen des folgenden Codeausschnitts in einem PAD-Designer: Dadurch werden die erforderlichen Schritte erstellt, um die Auflösungseinstellungen zu erfassen und in einer Datei mit Zeitstempel auszugeben.
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
-
Überprüfen Sie den Ausgabedateipfad der letzten Aktion, überprüfen Sie, ob die lokale Ausführung erfolgreich war, und speichern Sie sie.
-
Führen Sie das Skript sowohl im beaufsichtigten als auch im unbeaufsichtigten Modus aus, und überprüfen Sie dann, ob die Auflösung und die Skalierungsausgabe in beiden Modi dieselben Werte aufweisen.
Hinweis
Wie bereits erwähnt, haben Sie möglicherweise ein Dialogfeld für die Benutzerkontensteuerung (UAC), das die Ausführung Ihres Flows blockiert, wenn die Screenshotaktion selbst fehlschlägt. Melden Sie sich bei dem Computer an, der das Problem mit dem Konto, das Sie zum Ausführen des Flows verwenden, reproduziert, und überprüfen Sie, ob ein solches Blockierungsdialogfeld vorhanden ist. Ändern Sie in diesem Fall Ihre Startroutine, um dies zu verhindern.
Wenn das Skript über andere Schritte verfügt, schlägt es möglicherweise fehl, nachdem das Verhalten geändert wurde, um keine Fehler auszulösen, sodass wir einen Screenshot erstellen können. Daher sollten die Fehler nach dem zweiten Screenshot ignoriert werden.
Sobald das Problem verstanden und behoben wurde, stellt die das ursprüngliche Verhalten Ihres Flows wieder her, um Fehler auszulösen.