Gejala
Skrip yang berhasil dijalankan dalam mode yang dihadiri tidak berjalan dengan sukses dalam mode tanpa pengawas.
Biasanya gagal dengan pesan seperti: "Ada masalah saat menjalankan tindakan 'Klik'. Tautan tidak dapat diklik pada halaman web."
Penyebab
Kegagalan umum dalam proses tanpa pengawas disebabkan oleh salah satu hal berikut ini:
-
Skrip tidak diuji dalam mode yang dihadiri sebelum beralih ke tanpa pengawas
-
Konfigurasi berbeda yang digunakan oleh sesi tanpa pengawas
-
Akun Windows lain yang digunakan oleh menjalankan tanpa pengawas daripada yang digunakan untuk membuat alur
-
Resolusi layar (lihat cara mengubah resolusi layar)
-
Konfigurasi browser
-
Pengguna
-
Pemblokir popup
-
Ekstensi (hilang/ tidak diaktifkan)
-
-
-
Layar tidak dimuat seluruhnya (penundaan yang hilang)
-
Perintah UAC yang memblokir otomatisasi UI saat sesi dimulai
Solusi
Karena mungkin ada penyebab yang berbeda, solusi di bawah ini menjelaskan cara menambahkan cuplikan layar sebelum dan sesudah tindakan gagal untuk mendapatkan beberapa umpan balik visual. Melihat cuplikan layar dengan saksama setelah kegagalan skrip tanpa pengawas dapat membantu menemukan salah satu penyebab yang tercantum di atas. Ini juga menjelaskan cara membandingkan resolusi tampilan dan pengaturan skala.
Jika Anda sudah memiliki cuplikan layar dalam alur dan tangkapan layar gagal dijalankan, Anda mungkin memiliki dialog Kontrol Akun Pengguna (UAC) yang memblokir eksekusi alur Anda. Silakan masuk ke mesin yang mereprodusi masalah dengan akun yang Anda gunakan untuk menjalankan alur dan melihat apakah Anda memiliki dialog pemblokiran seperti itu. Jika anda melakukannya, ubah rutinitas startup Anda untuk mencegah hal ini terjadi.
Menambahkan cuplikan layar untuk memecahkan masalah
Mulai dengan masuk ke komputer yang mereproduksi masalah dengan akun yang Anda gunakan dalam koneksi Anda. Verifikasi bahwa tidak ada perintah UAC yang mungkin memblokir otomatisasi UI.
Jika tidak ada yang akan memblokir otomatisasi UI, ambil cuplikan layar sebelum dan sesudah langkah yang gagal dalam mode tanpa pengawas dapat membantu mendapatkan umpan balik visual.
Langkah gagal harus berlanjut pada kegagalan sehingga tangkapan layar dapat diambil setelah kegagalan.
1- Cari tindakan "Ambil tangkapan layar"
2- Seret dan letakkan tindakan "Ambil cuplikan layar" ke sisi skrip
3- Edit tindakan, gunakan "File" dan bukan clipboard, dan "before" di lokasi nama file
4- Kemudian salin/tempelkan, dan ubah nama file cuplikan layar setelah di dalamnya
5- Kelilingi langkah yang gagal dengan tangkapan layar
6- Mengubah perilaku onError dari langkah gagal
6a- Edit langkah dan klik "onError" di bagian bawah
6b- Atur alur berjalan ke "Lanjutkan proses alur" dan "Masuk ke tindakan berikutnya"
7- Simpan, jalankan secara lokal untuk menguji bahwa tangkapan layar dihasilkan, dan meluncurkan kembali jalankan tanpa pengawas.
8- Periksa file tangkapan layar tanpa pengawas .
Memeriksa resolusi layar dan perbedaan skala
Untuk membandingkan pengaturan resolusi antara eksekusi jalankan yang dihadiri dan tanpa pengawas, tambahkan tindakan di bawah ini dalam skrip Anda sebelum berjalan di kedua mode:
-
Salin/Tempelkan snippet kode di bawah ini dalam desainer PAD: ini akan membuat langkah-langkah yang diperlukan untuk merekam pengaturan resolusi dan membuat outputnya dalam file yang diberi stempel waktu.
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
-
Tinjau jalur file output dari tindakan terakhir, periksa apakah eksekusi lokal berhasil dan simpan.
-
Jalankan skrip dalam mode yang dihadiri dan tanpa pengawas, lalu periksa apakah resolusi dan output skala memiliki nilai yang sama di kedua mode.
Catatan
Seperti disebutkan di atas, jika tindakan cuplikan layar itu sendiri gagal, Anda mungkin memiliki dialog Kontrol Akun Pengguna (UAC) yang memblokir eksekusi alur Anda. Silakan masuk ke mesin yang mereprodusi masalah dengan akun yang Anda gunakan untuk menjalankan alur dan melihat apakah Anda memiliki dialog pemblokiran seperti itu. Jika anda melakukannya, ubah rutinitas startup Anda untuk mencegah hal ini terjadi.
Jika skrip memiliki langkah lain, skrip mungkin gagal setelah perilaku diubah untuk tidak melempar kesalahan sehingga kami dapat mengambil cuplikan layar. Jadi kegagalan setelah tangkapan layar kedua harus diabaikan.
Setelah masalah dipahami dan diperbaiki, pulihkan perilaku asli aliran Anda untuk membuat kesalahan.