studio
2024.10
false
- Notas de Versão
- Introdução
- Configuração e Instalação
- Projetos de automação
- Dependências
- Tipos de fluxos de trabalho
- Fluxo de controle
- Comparação de arquivos
- Melhores Práticas de Automação
- Integração de controle de origem
- Sobre o controle de versões
- Como gerenciar projetos com o TÁS
- Como gerenciar projetos com o SN
- Dif. do fluxo de trabalho
- Depuração
- Geração de logs
- A ferramenta de diagnóstico
- Analisador de Fluxo de Trabalho
- Sobre o Analisador de Fluxo de Trabalho
- STN MG-001 - Convenção de nomenclatura de variáveis
- STN MG-002 - Convenção de nomenclatura de argumentos
- STN MG-004 - Duplicação de Nome de Exibição
- STN MG-005 - Variável substitui variável
- STN MG-006 - Variável substitui argumento
- STN MG-008 - Comprimento de variável excedido
- STN MG-009 - Variáveis Catablema de prefixo
- STN MG-011 - Argumentos Catablema de prefixo
- STN MG-012 - Valores padrão de argumentos
- STN MG-016 - Comprimento do argumento excedido
- ST-NMG-017 - O nome da classe corresponde ao namespace padrão
- SR-DB-002 - Contagem alta de argumentos
- SR-DB-003 - Esvaziar bloco catechu
- SR-DB-007 - Múltiplas camadas Com fluxograma
- ST-DPB-010 - Várias instâncias de [Fluxo de trabalho] ou [Caso de teste]
- SR-DB-020 - Propriedades de saída indefinidas
- SR-DB-021 - Tempo limite embutido em código
- SR-DB-023 - Fluxo de trabalho vazio
- SR-DB-024 - Verificação da atividade Persistente
- SR-DB-025 - Pré-requisito de serialidade de variáveis
- SR-DB-026 - Uso da atividade Dela
- SR-DB-027 - Melhores práticas de persistência
- SR-DB-028 - Pré-requisito de serialidade de argumentos
- SR-US-005 - Argumentos de atividades embutidos em código
- SR-US-009 - Variáveis não utilizadas
- SR-US-010 - Dependências não utilizadas
- SR-US-014 - Restrições de pacotes
- ST-USG-017 – Modificador de parâmetro inválido
- SR-US-020 - Mensagens de logue mínimas
- SR-US-024 - Não utilizado e postergado
- SR-US-025 - Uso incorreto do valor salvo
- SR-US-026 - Restrições da atividade
- SR-US-027 - Pacotes necessários
- ST-USG-28 — restringir modelos de invocação de arquivos
- ST-USG-032 — rótulos obrigatórios
- ST-USG-034 — URL do Automation Hub
- Variáveis
- Argumentos
- Namespaces Importados
- Automações codificadas
- Introdução
- Registro de serviços personalizados
- Contextos Antes e Depois
- Gerando código
- Geração de caso de teste codificado a partir de casos de teste manuais
- Automação assistida baseada em gatilho
- Gravação
- Elementos de Interface Gráfica
- Seletores
- Repo. de Objetos
- Extração de Dados
- Automação de imagem e texto
- Automação das Tecnologias Citrix
- Automação RDP
- Automação do Varear Horizonte
- Automação da Salesforce
- Automação SAP
- Automaçāo da interface gráfica do macOS
- A ferramenta ScreenScrapeJavaSupport
- O protocolo Servodrive
- Extensões
- Sobre extensões
- Ferramenta SetupExtensions
- UiPathRemoteRuntime.exe não está sendo executado na sessão remota
- O UiPath Remote Runtime bloqueia a sessão do Citrix de ser fechado
- O UiPath Remote Runtime causa vazamento de memória
- O pacote UiPath.UIAutomation.Activities e as versões do UiPath Remote Runtime não correspondem
- A extensão do UiPath necessária não está instalada na máquina remota
- Configurações de resolução de tela
- Políticas de grupo
- Não é possível se comunicar com o navegador
- A extensão do Chrome é removida automaticamente
- A extensão pode ter sido corrompida
- Verifique se a extensão para o Chrome está instalada e habilitada
- Check if ChromeNativeMessaging.exe is running
- Check if ComSpec variable is defined correctly
- Habilite o Acesso às URLs do arquivo e o Modo Anônimo
- Multiple browser profiles
- Group Policy conflict
- Known issues specific to MV3 extensions
- Lista de extensões para Chrome
- Extensão do Chrome no Mac
- Políticas de grupo
- Não é possível se comunicar com o navegador
- A extensão Edge é removida automaticamente
- A extensão pode ter sido corrompida
- Check if the Extension for Microsoft Edge is installed and enabled
- Check if ChromeNativeMessaging.exe is running
- Check if ComSpec variable is defined correctly
- Enable access to file URLs and InPrivate mode
- Multiple browser profiles
- Group Policy conflict
- Known issues specific to MV3 extensions
- Lista de extensões para Edge
- Extensão em versões do Firefox anteriores à v128 ou v115 ESR
- Extensão em versões do Firefox anteriores à 65.0
- Termos de uso e Aviso de privacidade Janela pop-up.
- Verificando a Extensão
- Multiple browser profiles
- Extensão para Safari
- Extensão para o Varear Horizonte
- Extensão para Amazon WorkSpaces
- Plug-in do SAP Solution Manager
- Suplemento do Excel
- Teste do Studio
- Solução de problemas
- Sobre a solução de problemas
- Erros de compilação de montagem
- Suporte e limitações do Microsoft Apo-V
- Solução de problemas do Internet Explorer x64
- Problemas do Microsoft Office
- Como identificar elementos de EU em PDF com opções de acessibilidade
- Reparando o suporte da Active Accessibility
- Validation of large Windows-legacy projects takes longer than expected
Importante :
A localização de um conteúdo recém-publicado pode levar de 1 a 2 semanas para ficar disponível.

Guia do usuário do Studio
Última atualização 2 de out de 2025
De acordo com o anúncio da Mozilla sobre a expiração do certificado raiz do Firefox em 14 de março de 2025, as extensões não conseguem ser instaladas em versões do Firefox anteriores à v128 ou v115.13 ESR.
- Se a extensão já estiver instalada no Firefox, ela continuará a funcionar mesmo após o certificado raiz expirar.
- Se a extensão for instalada após o certificado raiz expirar, ela será desabilitada e não funcionará.
- Acesse
about:config
. - Alternar sinalizador
xpinstall.signatures.required
parafalse
.
Você pode usar a Política de Grupo para modificar a preferência
xpinstall.signatures.required
para todos os usuários e perfis automaticamente.Para obter mais detalhes, consulte Modelos de Política para o Firefox.
Versões mais antigas do Firefox não oferecem suporte a
xpinstall.signatures.required
por meio da Política de Grupo. Como alternativa, você pode usar os arquivos do AutoConfig:
- Salve o seguinte em um arquivo de texto:
// First line must be a comment. pref("xpinstall.signatures.required", false);
// First line must be a comment. pref("xpinstall.signatures.required", false); - Nomeie o arquivo de texto
allow-unsigned-extensions.cfg
. - Salve o seguinte em um arquivo de texto:
// First line must be a comment. pref("general.config.filename", "allow-unsigned-extensions.cfg"); pref("general.config.obscure_value", 0);
// First line must be a comment. pref("general.config.filename", "allow-unsigned-extensions.cfg"); pref("general.config.obscure_value", 0); - Nomeie o arquivo de texto
allow-unsigned-extensions.js
. - Localize o diretório de instalação do Firefox, normalmente
C:\Program Files\Mozilla Firefox
. - Copie
allow-unsigned-extensions.cfg
paraC:\Program Files\Mozilla Firefox
. - Copie
allow-unsigned-extensions.js
paraC:\Program Files\Mozilla Firefox\defaults\pref
.
Para versões do Firefox não ESR, você deve usar os arquivos AutoConfig.
- Salve o seguinte em um arquivo de texto:
// First line must be a comment. // In Firefox 55+, settings to configure add-on signing (and legacy add-ons) are stored in AddonSettings.jsm // The module exports an object with read-only properties, but that is not an issue since we can just replace // the exported object. // https://searchfox.org/mozilla-central/rev/2e08acdf8862e68b13166970e17809a3b5d6a555/toolkit/mozapps/extensions/internal/AddonSettings.jsm Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); function patchAddonSettings(modulePath) { var Module = Components.utils.import(modulePath, {}); // Note: we read the data from preferences instead of hard-coding a "true", so // that by default legacy add-ons are disabled. This enables the user to only // enable legacy add-ons for specific Firefox profiles when really needed. var AddonSettings; if ("lazy" in Module) { AddonSettings = Object.create(Module.lazy.AddonSettings); } else { AddonSettings = Object.create(Module.AddonSettings); } XPCOMUtils.defineLazyPreferenceGetter(AddonSettings, "REQUIRE_SIGNING", "xpinstall.signatures.required", false); XPCOMUtils.defineLazyPreferenceGetter(AddonSettings, "ALLOW_LEGACY_EXTENSIONS", "extensions.legacy.enabled", true); XPCOMUtils.defineLazyPreferenceGetter(AddonSettings, "LANGPACKS_REQUIRE_SIGNING", "extensions.langpacks.signatures.required", false); if ("lazy" in Module) { Module.lazy.AddonSettings = AddonSettings; } else { Module.AddonSettings = AddonSettings; } } // This is necessary to allow legacy add-ons via preferences. try { patchAddonSettings("resource://gre/modules/addons/XPIProvider.jsm"); } catch (e) { // AddonSettings is not in this file starting with Firefox 61, // but it comes back in Firefox 74 } try { patchAddonSettings("resource://gre/modules/addons/XPIDatabase.jsm"); } catch (e) { // AddonSettings is not in this file until Firefox 61 } // This override is needed to enable unsigned add-ons via preferences. patchAddonSettings("resource://gre/modules/addons/XPIInstall.jsm"); // This override is needed to allow unsigned add-ons to show up without warning in about:addons. // (this is UI-only, the add-on is not actually disabled despite what the UI claims). patchAddonSettings("resource://gre/modules/addons/AddonSettings.jsm"); Components.classes['@mozilla.org/consoleservice;1'] .getService(Components.interfaces.nsIConsoleService) .logStringMessage("enablelegacy.cfg: the extensions.legacy.enabled preference is working again."); pref("xpinstall.signatures.required", false);
// First line must be a comment. // In Firefox 55+, settings to configure add-on signing (and legacy add-ons) are stored in AddonSettings.jsm // The module exports an object with read-only properties, but that is not an issue since we can just replace // the exported object. // https://searchfox.org/mozilla-central/rev/2e08acdf8862e68b13166970e17809a3b5d6a555/toolkit/mozapps/extensions/internal/AddonSettings.jsm Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); function patchAddonSettings(modulePath) { var Module = Components.utils.import(modulePath, {}); // Note: we read the data from preferences instead of hard-coding a "true", so // that by default legacy add-ons are disabled. This enables the user to only // enable legacy add-ons for specific Firefox profiles when really needed. var AddonSettings; if ("lazy" in Module) { AddonSettings = Object.create(Module.lazy.AddonSettings); } else { AddonSettings = Object.create(Module.AddonSettings); } XPCOMUtils.defineLazyPreferenceGetter(AddonSettings, "REQUIRE_SIGNING", "xpinstall.signatures.required", false); XPCOMUtils.defineLazyPreferenceGetter(AddonSettings, "ALLOW_LEGACY_EXTENSIONS", "extensions.legacy.enabled", true); XPCOMUtils.defineLazyPreferenceGetter(AddonSettings, "LANGPACKS_REQUIRE_SIGNING", "extensions.langpacks.signatures.required", false); if ("lazy" in Module) { Module.lazy.AddonSettings = AddonSettings; } else { Module.AddonSettings = AddonSettings; } } // This is necessary to allow legacy add-ons via preferences. try { patchAddonSettings("resource://gre/modules/addons/XPIProvider.jsm"); } catch (e) { // AddonSettings is not in this file starting with Firefox 61, // but it comes back in Firefox 74 } try { patchAddonSettings("resource://gre/modules/addons/XPIDatabase.jsm"); } catch (e) { // AddonSettings is not in this file until Firefox 61 } // This override is needed to enable unsigned add-ons via preferences. patchAddonSettings("resource://gre/modules/addons/XPIInstall.jsm"); // This override is needed to allow unsigned add-ons to show up without warning in about:addons. // (this is UI-only, the add-on is not actually disabled despite what the UI claims). patchAddonSettings("resource://gre/modules/addons/AddonSettings.jsm"); Components.classes['@mozilla.org/consoleservice;1'] .getService(Components.interfaces.nsIConsoleService) .logStringMessage("enablelegacy.cfg: the extensions.legacy.enabled preference is working again."); pref("xpinstall.signatures.required", false); - Nomeie o arquivo de texto
enablelegacy.cfg
. - Salve o seguinte em um arquivo de texto:
// First line must be a comment. pref("general.config.filename", "enablelegacy.cfg"); pref("general.config.obscure_value", 0); pref("general.config.sandbox_enabled", false);
// First line must be a comment. pref("general.config.filename", "enablelegacy.cfg"); pref("general.config.obscure_value", 0); pref("general.config.sandbox_enabled", false); - Nomeie o arquivo de texto
enablelegacy-prefs.js
. - Localize o diretório de instalação do Firefox, normalmente
C:\Program Files\Mozilla Firefox
. - Copie
enablelegacy.cfg
paraC:\Program Files\Mozilla Firefox
. - Copie
enablelegacy-prefs.js
paraC:\Program Files\Mozilla Firefox\defaults\pref
.
Note: Recent versions of Firefox, like 102.10 ESR, re-enable the extension automatically once the flag is set. In older versions such as 68.0.2 ESR, it may be necessary to reinstall the extension.
Note: Firefox older than 68.0.2 ESR does not work with our implementation of Group Policy installation. The following script is a fix to be executed after running our installers. Studio 25.10 or newer will fix the
incompatibility.
# Define the registry path
$regPath = "HKLM:\SOFTWARE\Policies\Mozilla\Firefox\Extensions\Install"
function Convert-WindowsPathToFileUrl($path) {
$unixPath = $path -replace '\\', '/'
$escapedPath = $unixPath -replace ' ', '%20'
return "file:///" + $escapedPath
}
function Fix-FirefoxProfile($prefsPath, $fileUrl) {
if (-not (Test-Path $prefsPath)) {
Write-Host "prefs.js not found: $prefsPath"
return
}
Write-Host "Processing prefs.js: $prefsPath"
$content = Get-Content -Path $prefsPath -Raw
$pattern = 'user_pref\("browser\.policies\.runOncePerModification\.extensionsInstall",\s*"(.+?)"\);'
if (-not ($content -match $pattern)) {
Write-Host " -> No matching preference found in prefs.js."
return
}
$jsonArrayString = $matches[1]
# Unescape \" to "
$jsonArrayStringUnescaped = $jsonArrayString -replace '\\\"', '"'
try {
$list = ConvertFrom-Json -InputObject $jsonArrayStringUnescaped
} catch {
Write-Host " -> Error parsing JSON inside prefs.js preference (after unescaping)."
return
}
if (-not ($list -contains $fileUrl)) {
Write-Host " -> File URL not present in extensionsInstall list."
return
}
$newList = $list | Where-Object { $_ -ne $fileUrl }
$newJsonArrayString = ($newList | ConvertTo-Json -Compress)
# prefs.js expects it wrapped as a string, escaping " as \"
$escapedNewJsonArrayString = $newJsonArrayString -replace '"', '\"'
$newPrefLine = "user_pref(""browser.policies.runOncePerModification.extensionsInstall"", `"$escapedNewJsonArrayString`");"
# Replace the old line
$oldPrefLine = $matches[0]
$content = $content -replace [regex]::Escape($oldPrefLine), $newPrefLine
Set-Content -Path $prefsPath -Value $content -Encoding UTF8
Write-Host " -> prefs.js updated."
}
function Fix-AllFirefoxProfiles($fileUrl) {
$profilesPath = "$env:APPDATA\Mozilla\Firefox\Profiles"
if (-not (Test-Path $profilesPath)) {
Write-Host "Firefox profiles directory not found: $profilesPath"
return
}
$profiles = Get-ChildItem -Path $profilesPath -Directory
foreach ($profile in $profiles) {
$prefsPath = Join-Path $profile.FullName "prefs.js"
Fix-FirefoxProfile -prefsPath $prefsPath -fileUrl $fileUrl
}
}
if (-not (Test-Path $regPath)) {
Write-Host "Registry path not found: $regPath"
return
}
$values = Get-ItemProperty -Path $regPath
foreach ($property in $values.PSObject.Properties) {
$name = $property.Name
$value = $property.Value
if ($value -notmatch "^[a-zA-Z]:\\.*\\uipath-ff\.xpi$") {
continue
}
Write-Host "Found Windows path for uipath-ff.xpi in entry '$name': $value"
$fileUrl = Convert-WindowsPathToFileUrl $value
Write-Host " -> Converted to file URL: $fileUrl"
Set-ItemProperty -Path $regPath -Name $name -Value $fileUrl
Write-Host " -> Updated registry key '$name'."
Fix-AllFirefoxProfiles -fileUrl $fileUrl
}
# Define the registry path
$regPath = "HKLM:\SOFTWARE\Policies\Mozilla\Firefox\Extensions\Install"
function Convert-WindowsPathToFileUrl($path) {
$unixPath = $path -replace '\\', '/'
$escapedPath = $unixPath -replace ' ', '%20'
return "file:///" + $escapedPath
}
function Fix-FirefoxProfile($prefsPath, $fileUrl) {
if (-not (Test-Path $prefsPath)) {
Write-Host "prefs.js not found: $prefsPath"
return
}
Write-Host "Processing prefs.js: $prefsPath"
$content = Get-Content -Path $prefsPath -Raw
$pattern = 'user_pref\("browser\.policies\.runOncePerModification\.extensionsInstall",\s*"(.+?)"\);'
if (-not ($content -match $pattern)) {
Write-Host " -> No matching preference found in prefs.js."
return
}
$jsonArrayString = $matches[1]
# Unescape \" to "
$jsonArrayStringUnescaped = $jsonArrayString -replace '\\\"', '"'
try {
$list = ConvertFrom-Json -InputObject $jsonArrayStringUnescaped
} catch {
Write-Host " -> Error parsing JSON inside prefs.js preference (after unescaping)."
return
}
if (-not ($list -contains $fileUrl)) {
Write-Host " -> File URL not present in extensionsInstall list."
return
}
$newList = $list | Where-Object { $_ -ne $fileUrl }
$newJsonArrayString = ($newList | ConvertTo-Json -Compress)
# prefs.js expects it wrapped as a string, escaping " as \"
$escapedNewJsonArrayString = $newJsonArrayString -replace '"', '\"'
$newPrefLine = "user_pref(""browser.policies.runOncePerModification.extensionsInstall"", `"$escapedNewJsonArrayString`");"
# Replace the old line
$oldPrefLine = $matches[0]
$content = $content -replace [regex]::Escape($oldPrefLine), $newPrefLine
Set-Content -Path $prefsPath -Value $content -Encoding UTF8
Write-Host " -> prefs.js updated."
}
function Fix-AllFirefoxProfiles($fileUrl) {
$profilesPath = "$env:APPDATA\Mozilla\Firefox\Profiles"
if (-not (Test-Path $profilesPath)) {
Write-Host "Firefox profiles directory not found: $profilesPath"
return
}
$profiles = Get-ChildItem -Path $profilesPath -Directory
foreach ($profile in $profiles) {
$prefsPath = Join-Path $profile.FullName "prefs.js"
Fix-FirefoxProfile -prefsPath $prefsPath -fileUrl $fileUrl
}
}
if (-not (Test-Path $regPath)) {
Write-Host "Registry path not found: $regPath"
return
}
$values = Get-ItemProperty -Path $regPath
foreach ($property in $values.PSObject.Properties) {
$name = $property.Name
$value = $property.Value
if ($value -notmatch "^[a-zA-Z]:\\.*\\uipath-ff\.xpi$") {
continue
}
Write-Host "Found Windows path for uipath-ff.xpi in entry '$name': $value"
$fileUrl = Convert-WindowsPathToFileUrl $value
Write-Host " -> Converted to file URL: $fileUrl"
Set-ItemProperty -Path $regPath -Name $name -Value $fileUrl
Write-Host " -> Updated registry key '$name'."
Fix-AllFirefoxProfiles -fileUrl $fileUrl
}