Příznak
Skript, který lze úspěšně spustit v režimu obsluhy, se v bezobslužném režimu nespustí úspěšně.
Obvykle selhává se zprávou typu: "Došlo k potížím se spuštěním akce Klikněte. Na odkaz nelze kliknout na webové stránce."
Příčina
Typická selhání při bezobslužných spuštěních jsou způsobená jedním z následujících způsobů:
-
Skript nebyl testován v režimu obsluhy před přepnutím na bezobslužný
-
Jiná konfigurace používaná bezobslužnou relací
-
Jiný účet Windows používaný bezobslužným spuštěním, než který se použil k vytvoření toku
-
Rozlišení obrazovky (podívejte se, jak změnit rozlišení obrazovky)
-
Konfigurace prohlížeče
-
Uživatele
-
Blokování automaticky otevíraných oken
-
Rozšíření (chybějící nebo neaktivovaná)
-
-
-
Obrazovky se nenačtou úplně (chybějící zpoždění)
-
Výzva řízení uživatelských procesů, která blokuje automatizaci uživatelského rozhraní při zahájení relace
Řešení
Protože to může mít různé příčiny, níže uvedené řešení popisuje, jak přidat snímky obrazovky před a po neúspěšné akci, abyste získali vizuální zpětnou vazbu. Když se na snímky obrazovky podíváte pečlivě po bezobslužném selhání skriptu, můžete najít jednu z výše uvedených příčin. Popisuje také, jak porovnat nastavení rozlišení a měřítka zobrazení.
Pokud už máte v toku snímky obrazovky a nedaří se je spustit, možná máte dialogové okno Řízení uživatelských účtů (UAC) blokující spuštění toku. Přihlaste se k počítači, který problém reprodukuje s účtem, který používáte ke spuštění toku, a zjistěte, jestli máte takové dialogové okno blokování. Pokud ano, změňte rutinu spouštění tak, aby k tomu nedocházelo.
Přidání snímků obrazovky pro řešení potíží
Začněte tím, že se přihlásíte k počítači, který problém reprodukuje s účtem, který používáte ve svém připojení. Ověřte, že se nezobrazí žádná výzva řízení uživatelských dat, která může blokovat automatizaci uživatelského rozhraní.
Pokud neexistuje nic, co by neblokovalo automatizaci uživatelského rozhraní, pořiďte si snímek obrazovky před neúspěšným krokem v bezobslužném režimu a získejte vizuální zpětnou vazbu.
Neúspěšný krok by měl pokračovat i při selhání, aby se po selhání mohl pořídit snímek obrazovky.
1– Vyhledejte akci Pořídit snímek obrazovky.
2– Přetáhněte akci "Pořídit snímek obrazovky" na stranu skriptu.
3– Upravte akci, místo schránky použijte "Soubor" a "před" v umístění názvu souboru
4– Pak zkopírujte/vložte a změňte název souboru snímku obrazovky za
5– Obklopte neúspěšný krok snímky obrazovky.
6. Změna chování chyby při selhání kroku
6a- Upravte krok a klikněte na "onError" v dolní části
6b– Nastavte spuštění toku na "Pokračovat ve spuštění toku" a "Přejít na další akci".
7 – Uložte, spusťte místně , abyste otestuji, že se vytvořily snímky obrazovky, a znovu spusťte bezobslužné spuštění.
8 – Zkontrolujte soubory bezobslužných snímků obrazovky.
Kontrola rozlišení obrazovky a rozdílů ve škálování
Pokud chcete porovnat nastavení řešení mezi probíhajícím spuštěním a bezobslužným spuštěním, přidejte do skriptu před spuštěním v obou režimech následující akce:
-
Zkopírujte nebo vložte následující fragment kódu do návrháře PAD: Tím vytvoříte nezbytné kroky k zachycení nastavení rozlišení a jejich výstupu v souboru s časovým razítkem.
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
-
Zkontrolujte cestu k výstupnímu souboru z poslední akce, zkontrolujte, jestli místní spuštění proběhlo úspěšně, a uložte ji.
-
Spusťte skript v bezobslužném i bezobslužném režimu a pak zkontrolujte, jestli výstup rozlišení a škálování mají v obou režimech stejné hodnoty.
Poznámka:
Jak je uvedeno výše, pokud samotná akce snímků obrazovky selže, možná máte dialogové okno Řízení uživatelských účtů (UAC) blokující spuštění toku. Přihlaste se k počítači, který problém reprodukuje s účtem, který používáte ke spuštění toku, a zjistěte, jestli máte takové dialogové okno blokování. Pokud ano, změňte rutinu spouštění tak, aby k tomu nedocházelo.
Pokud skript obsahuje další kroky, může po změně chování selhat, aby nevyvolával chyby, abychom mohli pořídit snímek obrazovky. Chyby po druhém snímku obrazovky by se proto měly ignorovat.
Jakmile problém pochopíte a opravíte, obnovte původní chování toku a vyvolání chyb.