Симптом
Скрипт, който може да бъде изпълнен успешно в режим на посещаване, не се изпълнява успешно в ненаблюдаван режим.
Обикновено проблемът не се изпълнява със съобщение, като например: "Възникна проблем при изпълнението на действието "Щракнете". Връзката не можа да бъде щракната върху уеб страницата."
Причина
Типичните грешки при ненаблюдавания се дължат на едно от следните неща:
-
Скриптът не е тестван в режим на присъствие, преди да превключите на без надзор
-
Различна конфигурация, използвана от ненаблюданата сесия
-
Друг акаунт за Windows, използван от ненаблюдаваното изпълнение, от този, използван за създаване на потока
-
Разделителна способност на екрана (вижте как да промените разделителната способност на екрана)
-
Конфигурация на браузъра
-
Потребител
-
Програма за блокиране на изскачащи прозорци
-
Разширения (липсващи/неактивирани)
-
-
-
Екраните не се зареждат напълно (липсват забавяния)
-
UAC подкана, която блокира автоматизацията на потребителския интерфейс при започване на сесията
Решение
Тъй като може да има различни причини, решението по-долу описва как да добавите екранни снимки преди и след неуспешно действие, за да получите визуална обратна връзка. Внимателното преглеждане на екранните снимки след ненаблюдаван отказ в скрипт може да ви помогне да намерите една от причините, изброени по-горе. Тя описва също как да сравните разделителната способност на дисплея и настройките за мащабиране.
Ако вече имате екранни снимки в потока си и те не се изпълняват, може да имате диалогов прозорец "Управление на потребителските акаунти" (UAC), който блокира изпълнението на вашия поток. Влезте в машината, която възпроизвежда проблема с акаунта, който използвате, за да изпълните потока, и проверете дали имате такъв блокиращ диалогов прозорец. Ако го направите, променете подпркото стартиране, за да предотвратите възникването на това.
Добавяне на екранни снимки за отстраняване на неизправности
Започнете, като влезете в компютъра, който възпроизвежда проблема с акаунта, който използвате във вашата връзка. Уверете се, че няма UAC подкана, която може да блокира автоматизацията на потребителския интерфейс.
Ако няма нищо, което да блокира автоматизацията на потребителския интерфейс, заснемането на екранна снимка преди и след неуспешна стъпка в ненаблюдаван режим може да ви помогне да получите визуална обратна връзка.
Неуспешната стъпка трябва да продължи при неуспех, така че да може да се направи екранна снимка след неуспеха.
1 – Потърсете действието "Заснемане на екранна снимка"
2- Плъзнете и пуснете действието "Заснемане на екранна снимка" в страната на скрипта
3 – Редактирайте действието, използвайте "Файл" вместо клипборда и "преди" в местоположението на името на файла
4- След това копирайте /поставете и променете името на файла на екранната снимка с след това
5 - Оградете неуспешната стъпка с екранните снимки
6 - Промяна на поведението на onError на неуспешната стъпка
6a- Редактирайте стъпката и щракнете върху "onError" в долната част
6b – Задайте потока да се изпълнява на "Продължи потока изпълнение" и "Отиди на следващото действие"
7 – Запишете, изпълнете локално , за да тествате дали са произведени екранни снимки, и стартирайте отново ненаблюдаван режим.
8 – Проверете ненаблюдавания файл с екранни снимки.
Проверка на разделителната способност на екрана и разликите в мащаба
За да сравните настройките за разделителна способност между изпълняваните и ненаблюдаванията, добавете действията по-долу в скрипта, преди да ги изпълните и в двата режима:
-
Копирайте/поставете фрагмента от код по-долу в PAD дизайнер: това ще създаде необходимите стъпки за заснемане на настройките за разделителна способност и извеждането им във файл с клеймо с дата и час.
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
-
Прегледайте пътя на изходния файл от последното действие, проверете дали локалното изпълнение е успешно и запишете.
-
Изпълнете скрипта както в присъстващите, така и в ненаблюдавания режим, след което проверете дали разделителната способност и изхода от мащаба имат едни и същи стойности и в двата режима.
Забележка
Както е споменато по-горе, ако самото действие за екранни снимки е неуспешно, може да имате диалогов прозорец за управление на потребителските акаунти (UAC), който блокира изпълнението на вашия поток. Влезте в машината, която възпроизвежда проблема с акаунта, който използвате, за да изпълните потока, и проверете дали имате такъв блокиращ диалогов прозорец. Ако го направите, променете подпркото стартиране, за да предотвратите възникването на това.
Ако скриптът има други стъпки, той може да е неуспешен, тъй като поведението е променено да не дава грешки, така че да можем да направим екранна снимка. Така че грешките след втората екранна снимка трябва да бъдат игнорирани.
След като проблемът бъде разбран и коригиран, възстановете първоначалното поведение на вашия поток, за да възникнат грешки.