อาการ
สคริปต์ที่สามารถดําเนินการได้ในโหมดที่เข้าร่วมทํางานไม่สําเร็จในโหมดอัตโนมัติ
โดยปกติแล้วจะล้มเหลวกับข้อความเช่น: "มีปัญหาในการเรียกใช้การดําเนินการ 'คลิก' ไม่สามารถคลิกการเชื่อมโยงบนเว็บเพจได้"
สาเหตุ
ความล้มเหลวทั่วไปในการรันแบบไม่ต้องเฝ้าดูมีสาเหตุจากสิ่งใดสิ่งหนึ่งต่อไปนี้:
-
ไม่ได้ทดสอบสคริปต์ในโหมดที่เข้าร่วมก่อนที่จะสลับไปยังโหมดไม่ต้องใส่ข้อมูล
-
การกําหนดค่าอื่นที่ใช้โดยเซสชันแบบไม่ต้องเฝ้าดู
-
บัญชี Windows อื่นที่ใช้โดยเรียกใช้แบบไม่ต้องเฝ้าดูมากกว่าที่ใช้ในการสร้างโฟลว์
-
ความละเอียดของหน้าจอ (ดู วิธีการเปลี่ยนความละเอียดของหน้าจอ)
-
การกําหนดค่าเบราว์เซอร์
-
ผู้ใช้
-
ตัวบล็อกป็อปอัพ
-
ส่วนขยาย (หายไป/ ไม่ได้เปิดใช้งาน)
-
-
-
หน้าจอไม่โหลดอย่างสมบูรณ์ (การหน่วงเวลาหายไป)
-
พร้อมท์ UAC ที่บล็อกระบบอัตโนมัติของ UI เมื่อเซสชันเริ่มต้น
วิธีแก้ไขปัญหา
วิธีการแก้ไขปัญหาด้านล่างจะอธิบายวิธีการเพิ่มสกรีนช็อตก่อนและหลังการดําเนินการล้มเหลวเพื่อรับคําติชมแบบเป็นภาพ การดูภาพหน้าจออย่างระมัดระวังหลังจากสคริปต์ล้มเหลวแบบไม่ต้องเฝ้าอาจช่วยค้นหาหนึ่งในสาเหตุที่แสดงไว้ข้างต้น และยังอธิบายวิธีการเปรียบเทียบความละเอียดของจอแสดงผลและการตั้งค่าสเกล
ถ้าคุณมีสกรีนช็อตในโฟลว์ของคุณอยู่แล้ว และไม่สามารถดําเนินการได้ คุณอาจมีกล่องโต้ตอบการควบคุมบัญชีผู้ใช้ (UAC) ที่บล็อกการดําเนินการของโฟลว์ของคุณ โปรดเข้าสู่ระบบเครื่องที่กําลังจําลองปัญหากับบัญชีที่คุณใช้เพื่อดําเนินการโฟลว์และดูว่าคุณมีกล่องโต้ตอบการบล็อกดังกล่าวหรือไม่ ถ้าคุณทําเช่นนั้น ให้เปลี่ยนกิจวัตรการเริ่มต้นระบบของคุณเพื่อป้องกันไม่ให้เกิดเหตุการณ์นี้ขึ้น
การเพิ่มสกรีนช็อตเพื่อแก้ไขปัญหา
เริ่มต้นด้วยการลงชื่อเข้าใช้คอมพิวเตอร์ที่ทําให้เกิดปัญหาขึ้นใหม่กับบัญชีที่คุณใช้ในการเชื่อมต่อ ตรวจสอบว่าไม่มีพร้อมท์ UAC ที่อาจบล็อกระบบอัตโนมัติของ UI
หากไม่มีสิ่งใดที่จะบล็อกระบบอัตโนมัติของ UI ให้ถ่ายภาพหน้าจอก่อนและหลังขั้นตอนความล้มเหลวในโหมดไม่ต้องเฝ้าดูสามารถช่วยรับคําติชมด้วยภาพได้
ขั้นตอนความล้มเหลวควรดําเนินการต่อเมื่อล้มเหลวเพื่อให้สามารถจับภาพหน้าจอหลังจากความล้มเหลว
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) ที่บล็อกการดําเนินการของโฟลว์ของคุณ โปรดเข้าสู่ระบบเครื่องที่กําลังจําลองปัญหากับบัญชีที่คุณใช้เพื่อดําเนินการโฟลว์และดูว่าคุณมีกล่องโต้ตอบการบล็อกดังกล่าวหรือไม่ ถ้าคุณทําเช่นนั้น ให้เปลี่ยนกิจวัตรการเริ่มต้นระบบของคุณเพื่อป้องกันไม่ให้เกิดเหตุการณ์นี้ขึ้น
หากสคริปต์มีขั้นตอนอื่น ๆ อาจล้มเหลวหลังจากที่มีการเปลี่ยนแปลงลักษณะการทํางานเพื่อไม่ให้แสดงข้อผิดพลาดเพื่อให้เราสามารถถ่ายภาพหน้าจอ ดังนั้นความล้มเหลวหลังจากสกรีนช็อตที่สองควรถูกละเว้น
เมื่อเข้าใจและแก้ไขปัญหาแล้ว การคืนค่าลักษณะการทํางานเดิมของโฟลว์ของคุณเพื่อแสดงข้อผิดพลาด