Sintoma
Um script que pode ser executado com êxito no modo assistido não é executado com êxito no modo autônomo.
Geralmente, ele está falhando com uma mensagem como: "Houve um problema ao executar a ação 'Clique'. O link não pôde ser clicado na página da Web."
Causa
Falhas típicas em execuções autônomas são causadas por uma das seguintes:
-
Script não testado no modo assistido antes de mudar para autônomo
-
Configuração diferente usada pela sessão autônoma
-
Uma conta do Windows diferente usada por execução autônoma do que a usada para criar o fluxo
-
Resolução de tela ( veja como alterar a resolução da tela)
-
Configuração do navegador
-
Usuário
-
Bloqueador pop-up
-
Extensões (ausentes/não ativadas)
-
-
-
As telas não são carregadas inteiramente (atrasos ausentes)
-
Um prompt UAC que bloqueia a automação da interface do usuário quando a sessão começa
Solução
Como pode haver causas diferentes, a solução abaixo descreve como adicionar capturas de tela antes e depois de uma ação de falha para obter alguns comentários visuais. Examinar as capturas de tela cuidadosamente após uma falha de script autônoma pode ajudar a encontrar uma das causas listadas acima. Ele também descreve como comparar as configurações de resolução e escala de exibição.
Se você já tiver capturas de tela em seu fluxo e elas não estiverem sendo executadas, você poderá ter uma caixa de diálogo UAC (Controle de Conta de Usuário) bloqueando a execução do fluxo. Faça logon no computador que está reproduzindo o problema com a conta que você está usando para executar o fluxo e veja se você tem uma caixa de diálogo de bloqueio. Se você fizer isso, altere sua rotina de inicialização para evitar que isso ocorra.
Adicionando capturas de tela para solucionar problemas
Comece fazendo logon no computador que reproduz o problema com a conta que você está usando em sua conexão. Verifique se não há nenhum prompt UAC que possa estar bloqueando a automação da interface do usuário.
Se não houver nada que bloqueie a automação da interface do usuário, faça uma captura de tela antes e depois de uma etapa de falha no modo autônomo pode ajudar a obter comentários visuais.
A etapa de falha deve continuar com a falha para que uma captura de tela possa ser feita após a falha.
1- Procure a ação "Tirar captura de tela"
2- Arrastar e soltar a ação "Tirar captura de tela" para o lado do script
3- Editar a ação, usar "Arquivo" em vez de área de transferência e "antes" no local do nome do arquivo
4- Em seguida, copie/cole e altere o nome do arquivo de captura de tela com after nele
5- Cercar a etapa de falha com as capturas de tela
6- Alterar o comportamento onError da etapa de falha
6a- Editar a etapa e clicar em "onError" na parte inferior
6b- Defina a execução de fluxo como "Continuar a execução de fluxo" e "Ir para a próxima ação"
7- Salvar, executar localmente para testar se as capturas de tela são produzidas e relançar uma execução autônoma.
8- Verifique os arquivos de captura de tela autônomos .
Verificar as diferenças de resolução e escala de tela
Para comparar as configurações de resolução entre execuções de execução assistidas e autônomas, adicione as ações abaixo no script antes de executar em ambos os modos:
-
Copie/cole o snippet de código abaixo em um designer PAD: isso criará as etapas necessárias para capturar as configurações de resolução e desenhá-las em um arquivo com carimbo de data/hora.
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
-
Examine o caminho do arquivo de saída da última ação, marcar que a execução local seja bem-sucedida e salve.
-
Execute o script em modos assistidos e autônomos e, em seguida, marcar se a resolução e a saída de escala têm os mesmos valores em ambos os modos.
Observação
Como é mencionado acima, se a ação de capturas de tela falhar, você poderá ter uma caixa de diálogo UAC (Controle de Conta de Usuário) bloqueando a execução do fluxo. Faça logon no computador que está reproduzindo o problema com a conta que você está usando para executar o fluxo e veja se você tem uma caixa de diálogo de bloqueio. Se você fizer isso, altere sua rotina de inicialização para evitar que isso ocorra.
Se o script tiver outras etapas, ele poderá falhar depois, pois o comportamento foi alterado para não gerar erros para que possamos fazer uma captura de tela. Portanto, as falhas após a segunda captura de tela devem ser ignoradas.
Depois que o problema for compreendido e corrigido, restaure o comportamento original do fluxo para gerar erros.