使用 Microsoft 登录
登录或创建帐户。
你好,
使用其他帐户。
你有多个帐户
选择要登录的帐户。

症状

可在参与模式下成功执行的脚本不会在无人参与模式下成功运行。

它通常失败,并显示如下消息:“运行操作'Click'时出现问题。 无法单击网页上的链接。”

原因

无人参与的运行中的典型故障由以下原因之一引起:

  • 在切换到无人参与模式之前未在参与模式下测试脚本

  • 无人参与会话使用的不同配置

    • 无人参与的运行所使用的 Windows 帐户与用于创建流的帐户不同

    • 屏幕分辨率 (了解如何更改屏幕分辨率)

    • 浏览器配置

      • 用户

      • 弹出窗口阻止程序

      • 扩展 (缺失/未激活)

  • 屏幕不会完全加载 (缺少延迟)

  • 会话开始时阻止 UI 自动化的 UAC 提示

解决方案

由于原因可能不同,下面的解决方案介绍如何在失败操作之前和之后添加屏幕截图,以获取一些视觉反馈。 在无人参与的脚本失败后仔细查看屏幕截图有助于查找上面列出的原因之一。 它还介绍了如何比较显示分辨率和缩放设置。

如果流中已有屏幕截图,并且它们无法执行,则可能有一个“用户帐户控制 (UAC) 对话框阻止流执行。 请使用用于执行流的帐户登录到重现问题的计算机,并查看是否有此类阻止对话框。 如果这样做,请更改启动例程以防止发生这种情况。

添加屏幕截图进行故障排除

首先,登录到计算机,该计算机会重现连接中所使用的帐户的问题。 验证是否存在可能阻止 UI 自动化的 UAC 提示。

如果没有任何内容会阻止 UI 自动化,请在无人参与模式下在失败步骤之前和之后拍摄屏幕截图有助于获取视觉反馈。

失败步骤应在失败时继续,以便在失败后可以拍摄屏幕截图。

1- 查找“拍摄屏幕截图”操作

执行屏幕截图操作

 2- 将“拍摄屏幕截图”操作拖放到脚本端

拖放“采取屏幕截图”操作

3- 编辑操作,使用“文件”而不是剪贴板,在文件名位置使用“before填写“采取屏幕截图”操作属性

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) 对话框阻止流执行。 请使用用于执行流的帐户登录到重现问题的计算机,并查看是否有此类阻止对话框。 如果这样做,请更改启动例程以防止发生这种情况。

如果脚本包含其他步骤,则可能会在之后失败,因为更改行为不会引发错误,以便我们可以拍摄屏幕截图。 因此,应忽略第二张屏幕截图之后的失败。 

了解并修复问题后,将还原流的原始行为以引发错误。

需要更多帮助?

需要更多选项?

了解订阅权益、浏览培训课程、了解如何保护设备等。

社区可帮助你提出和回答问题、提供反馈,并听取经验丰富专家的意见。

此信息是否有帮助?

你对语言质量的满意程度如何?
哪些因素影响了你的体验?
按“提交”即表示你的反馈将用于改进 Microsoft 产品和服务。 你的 IT 管理员将能够收集此数据。 隐私声明。

谢谢您的反馈!

×