Simptoma
Skripta koja se može uspešno izvršiti u režimu prisustvu ne pokreće se uspešno u režimu bez nadzora.
Obično ne uspeva sa porukom kao što je: "Došlo je do problema prilikom pokretanja radnje "Kliknite". Nije bilo moguće kliknuti na vezu na veb stranici".
Izazvati
Tipične greške u pokretanjema bez nadzora izaziva nešto od sledećeg:
-
Skripta koja nije testirana u režimu prisutnog pre prebacivanja na bez nadzora
-
Različita konfiguracija koju koristi sesija bez nadzora
-
Drugi Windows nalog koji koristi pokretanje bez nadzora od onog koji se koristi za kreiranje toka
-
Rezolucija ekrana ( pogledajte kako da promenite rezoluciju ekrana)
-
Konfiguracija pregledača
-
Korisnika
-
Blokator iskačućih prozora
-
Proširenja (nedostaju/ nisu aktivirana)
-
-
-
Ekrani nisu potpuno učitani (kašnjenja koja nedostaju)
-
UAC odziv koji blokira automatizaciju korisničkog interfejsa kada sesija počne
Rešenje
Pošto mogu da postoje različiti uzroci, dolenavedeno rešenje opisuje kako da dodate snimke ekrana pre i posle neuspešne radnje da biste dobili vizuelne povratne informacije. Pažljivo pregledanje snimaka ekrana nakon otkazivanja skripte bez nadzora može da pomogne u pronalaženju jednog od gorenavedenih uzroka. On takođe opisuje kako da uporedite rezoluciju prikaza i postavke razmere.
Ako već imate snimke ekrana u toku i oni ne uspevaju da se izvrše, možda imate dijalog Kontrola korisničkog naloga (UAC) koji blokira izvršavanje toka. Prijavite se na računar koji reprodukova problem sa nalogom koji koristite za izvršavanje toka i proverite da li imate takav dijalog za blokiranje. Ako to uradite, promenite rutinu pokretanja da biste sprečili da se ovo desi.
Dodavanje snimaka ekrana za rešavanje problema
Počnite tako što ćete se prijaviti na računar koji proizvodi problem sa nalogom koji koristite u vašoj vezi. Potvrdite da ne postoji UAC odziv koji možda blokira automatizaciju korisničkog interfejsa.
Ako ne postoji ništa što bi blokiralo automatizaciju korisničkog interfejsa, napravite snimak ekrana pre i posle neuspešnog koraka u režimu bez nadzora može pomoći da dobijete vizuelne povratne informacije.
Korak koji padne trebalo bi da se nastavi sa neuspehom kako bi snimak ekrana bio preduzet nakon otkazivanja.
1- Potražite radnju "Napravi snimak ekrana"
2- Prevucite i otpustite radnju "Napravi snimak ekrana" na stranu skripte
3- Uredite radnju, koristite "Datoteka" umesto ostave i "ranije" u lokaciji imena datoteke
4- Zatim kopirajte/nalepite i promenite ime datoteke snimka ekrana sa posle toga u
5- Okružite neuspešni korak snimcima ekrana
6- Promena ponašanja onErrorkoraka koji nije uspeo
6a- Uredite korak i kliknite na "onError" na dnu
6b- Podesite tok na "Nastavi tok pokrenut" i "Idi na sledeću radnju"
7– Sačuvajte, pokrenite lokalno da biste testirali da li se snimci ekrana proizvode i ponovo pokrenite pokretanje bez nadzora.
8- Proverite datoteke snimaka ekrana bez nadzora.
Provera rezolucije ekrana i razlika u razmerama
Da biste uporedili postavke rezolucije između izvršavanja izvršavanja za učesnike i izvršavanja bez nadzora, dodajte dolenavedene radnje u skriptu pre pokretanja u oba režima:
-
Kopirajte/nalepite dolenavedeni isečak koda u dizajneru PAD tastature: ovo će kreirati neophodne korake za hvatanje postavki rezolucije i izvoz u datoteku sa vremenski ograničenim oznakama.
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
-
Pregledajte putanju izlazne datoteke od poslednje radnje, proverite da li je lokalno izvršavanje uspešno i sačuvajte.
-
Pokrenite skriptu i u režimima bez nadzora, a zatim proverite da li izlaz rezolucije i razmere imaju iste vrednosti u oba režima.
Beleške
Kao što je pomenuto iznad, ako sama radnja sa snimcima ekrana ne uspe, možda imate dijalog Kontrola korisničkog naloga (UAC) koji blokira izvršavanje toka. Prijavite se na računar koji reprodukova problem sa nalogom koji koristite za izvršavanje toka i proverite da li imate takav dijalog za blokiranje. Ako to uradite, promenite rutinu pokretanja da biste sprečili da se ovo desi.
Ako skripta ima druge korake, možda neće uspeti pošto je ponašanje promenjeno da se ne bi došlo do grešaka tako da možemo da napravimo snimak ekrana. Zbog toga bi greške posle drugog snimka ekrana trebalo da se zanemaruju.
Kada se problem razume i popravi, vratite originalno ponašanje toka u prethodno stanje da biste naišli na greške.