Jelenség
A sikeresen végrehajtható szkriptek felügyelet nélküli módban nem futnak sikeresen.
Ez általában a következőhöz hasonló üzenettel meghiúsul: "Probléma merült fel a "Click" művelet futtatásakor. A hivatkozás nem kattintható a weblapra."
A probléma oka
A felügyelet nélküli futtatások jellemző hibáit az alábbiak egyike okozza:
-
A szkript nem lett tesztelve a felügyelt módban, mielőtt felügyelet nélkülire váltana
-
A felügyelet nélküli munkamenet által használt különböző konfigurációk
-
A felügyelet nélküli futtatás által használt másik Windows-fiók, mint amelyet a folyamat létrehozásához használtak
-
Képernyőfelbontás (lásd : a képernyőfelbontás módosítása)
-
Böngészőkonfiguráció
-
Felhasználó
-
Előugró ablak blokkolója
-
Bővítmények (hiányzó/nem aktivált)
-
-
-
A képernyők nincsenek teljesen betöltve (hiányzó késések)
-
UAC-kérés, amely blokkolja a felhasználói felület automatizálását a munkamenet kezdetekor
Megoldás
Mivel ennek különböző okai lehetnek, az alábbi megoldás azt ismerteti, hogyan adhat hozzá képernyőképeket egy sikertelen művelet előtt és után, hogy vizuális visszajelzést kapjon. A felügyelet nélküli szkripthiba utáni képernyőképek alapos tanulmányozása segíthet megtalálni a fent felsorolt okok egyikét. Azt is ismerteti, hogyan hasonlíthatja össze a megjelenítési felbontást és a méretezési beállításokat.
Ha a folyamat már rendelkezik képernyőképekkel, és azok végrehajtása sikertelen, előfordulhat, hogy egy felhasználói fiókok felügyelete (UAC) párbeszédpanel blokkolja a folyamat végrehajtását. Jelentkezzen be arra a gépre, amely reprodukálja a problémát a folyamat végrehajtásához használt fiókkal, és ellenőrizze, hogy van-e ilyen blokkoló párbeszédpanel. Ha így tesz, módosítsa az indítási rutint, hogy ez ne fordul elő.
Képernyőképek hozzáadása a hibaelhárításhoz
Először jelentkezzen be arra a számítógépre, amely reprodukálja a problémát a kapcsolatban használt fiókkal. Ellenőrizze, hogy nincs-e olyan UAC-kérés, amely blokkolhatja a felhasználói felület automatizálását.
Ha nincs semmi, ami blokkolná a felhasználói felület automatizálását, készítsen képernyőképet egy felügyelet nélküli módban egy sikertelen lépés előtt és után, hogy vizuális visszajelzést kapjon.
A sikertelen lépésnek továbbra is sikertelennek kell lennie, hogy képernyőkép készüljön a hiba után.
1 – Keresse meg a "Képernyőkép készítése" műveletet
2 – Húzza a "Képernyőkép készítése" műveletet a szkript oldalára
3 – Szerkessze a műveletet, a vágólap helyett használja a "Fájl" és a "before" kifejezést a fájlnév helyén
4 – Ezután másolja/illessze be, majd módosítsa a képernyőkép fájlnevét a következővel:
5 – Vegye körül a hibás lépést a képernyőképekkel
6 – A sikertelen lépés hiba utáni viselkedésének módosítása
6a – Szerkessze a lépést, és kattintson az alul található "onError" elemre
6b – Állítsa a folyamatfuttatást "Folyamatfuttatás folytatása" és "Ugrás a következő műveletre" értékre
7 – Mentés, helyi futtatás a képernyőképek létrehozásának teszteléséhez és a felügyelet nélküli futtatás újraindításához.
8 – Ellenőrizze a felügyelet nélküli képernyőképfájlokat.
Képernyőfelbontási és méretezési különbségek ellenőrzése
Ha össze szeretné hasonlítani a feloldási beállításokat a részt vett és a felügyelet nélküli futtatási végrehajtások között, adja hozzá az alábbi műveleteket a szkripthez, mielőtt mindkét módban futna:
-
Másolja/illessze be az alábbi kódrészletet egy PAD-tervezőben: ezzel létrehozza a feloldási beállítások rögzítéséhez és az időbélyegzővel ellátott fájlban való kimenetükhöz szükséges lépéseket.
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
-
Tekintse át az utolsó művelet kimeneti fájljának elérési útját, ellenőrizze, hogy a helyi végrehajtás sikeres volt-e, és mentse a fájlt.
-
Futtassa a szkriptet a részt vett és a felügyelet nélküli módban is, majd ellenőrizze, hogy a felbontás és a skálázás kimenete mindkét módban ugyanazokat az értékeket használja-e.
Megjegyzés:
Ahogy már említettük, ha maga a képernyőkép-művelet meghiúsul, előfordulhat, hogy a felhasználói fiókok felügyelete (UAC) párbeszédpanel blokkolja a folyamat végrehajtását. Jelentkezzen be arra a gépre, amely reprodukálja a problémát a folyamat végrehajtásához használt fiókkal, és ellenőrizze, hogy van-e ilyen blokkoló párbeszédpanel. Ha így tesz, módosítsa az indítási rutint, hogy ez ne fordul elő.
Ha a szkriptnek más lépései is vannak, előfordulhat, hogy a művelet sikertelen lesz, mivel a viselkedés módosult, és nem ad vissza hibákat, hogy képernyőképet készíthessünk. Ezért a második képernyőkép utáni hibákat figyelmen kívül kell hagyni.
A probléma megértése és kijavítása után a folyamat eredeti viselkedésének visszaállítása a hibák elhárításához.