studio
2024.10
false
Important :
La localisation du contenu nouvellement publié peut prendre 1 à 2 semaines avant d’être disponible.
UiPath logo, featuring letters U and I in white

Guide de l’utilisateur de Studio

Dernière mise à jour 13 juin 2025

Résolution des problèmes

Remarque : vous devez utiliser au minimum Firefox version 52.0 pour effectuer les automatisations du navigateur.

Cette rubrique présente les dysfonctionnements les plus courants de l’extension pour Firefox et les solutions possibles.

Extension sur les versions de Firefox antérieures à v128 ou v115 ESR

According to Mozilla announcement about Firefox's root certificate expiration on March 14, 2025, extensions fail to install in Firefox versions older than v128 or v115.13 ESR.
  • If the extension is already installed in Firefox, it will continue to work even after the root certificate expires.
  • If the extension is installed after the root certificate expires, it will be disabled and will not work.

You can apply certain workarounds, but this depends on how old your Firefox version is and whether or not it is an ESR (Extended Support Release) version.

Solution pour Firefox ESR

  1. Accédez à about:config .
  2. Activez/désactivez l'indicateur xpinstall.signatures.required pour false.

It is preferable to automatically apply this setting to all profiles using one of the methods listed below.

Firefox v102.10 ESR ou version ultérieure

Vous pouvez utiliser la stratégie de groupe pour modifier automatiquement la préférence xpinstall.signatures.required de tous les utilisateurs et profils. Pour de plus amples informations, consultez la section Modèles de stratégies de Firefox.

Version Firefox plus ancienne que v102.10 ESR

Les anciennes versions de Firefox ne prennent pas en charge xpinstall.signatures.required dans le cadre d'une stratégie de groupe. Pour contourner ce problème, vous pouvez utiliser des fichiers AutoConfig :
  1. Enregistrez les éléments suivants dans un fichier texte :

    // First line must be a comment.
    pref("xpinstall.signatures.required", false);// First line must be a comment.
    pref("xpinstall.signatures.required", false);
  2. Nommez le fichier texte allow-unsigned-extensions.cfg.
  3. Enregistrez les éléments suivants dans un fichier texte :

    // 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);
  4. Nommez le fichier texte allow-unsigned-extensions.js.
  5. Recherchez le répertoire d'installation de Firefox, généralement C:\Program Files\Mozilla Firefox.
  6. Copiez allow-unsigned-extensions.cfg dans C:\Program Files\Mozilla Firefox.
  7. Copiez allow-unsigned-extensions.js dans C:\Program Files\Mozilla Firefox\pref.

Firefox – Versions standard

Pour les versions non-ESR de Firefox, vous devez utiliser des fichiers AutoConfig.

  1. Enregistrez les éléments suivants dans un fichier texte :

    // 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);
    
  2. Nommez le fichier texte enable-legacy.cfg.
  3. Enregistrez les éléments suivants dans un fichier texte :

    // 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);
  4. Nommez le fichier texte enablelegacy-prefs.js.
  5. Recherchez le répertoire d'installation de Firefox, généralement C:\Program Files\Mozilla Firefox.
  6. Copiez allow-unsigned-extensions.cfg dans C:\Program Files\Mozilla Firefox.
  7. Copiez allow-unsigned-extensions.js dans C:\Program Files\Mozilla Firefox\defaults\pref.
Remarque :

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.

La méthode d'installation Group Policy Offline (Stratégie de groupe hors ligne) ne fonctionne pas avec Firefox 68.0.2 ESR et éventuellement les versions antérieures. Une solution de contournement temporaire consiste à ajouter le code suivant à un script PowerShell et à l'exécuter avec des privilèges d'administrateur :

# 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
}

Extension sur les versions de Firefox antérieures à la version 65.0

Description

Mozilla a introduit un algorithme de vérification de signature d'extension dans Firefox, qui désactive les modules complémentaires pour Firefox version 65.0 et inférieure. Par conséquent, si vous installez l'Extension UiPath pour Firefox sur la version 65.0 ou inférieure du navigateur, le message d'erreur suivant s'affiche :

This add-on could not be installed because it appears to be corrupt.

Solution 1

Mettez à jour Firefox vers la version v66.0.4 ou ultérieures.

Solution 2

À partir de Studio 2020.8, l'extension Firefox est nouvellement signée et doit être correctement installée sur les anciennes versions du navigateur Firefox.

Terms of Use and Privacy Notice Popup Window

Description

Starting with Firefox v138, the following prompt is displayed when starting the browser and may affect your automations:

Figure 1. . docs image
Solution

The only solution to skip this prompt is to set the SkipTermsOfUse Group Policy as described here.

Vérification de l'extension

Vérifiez que l'extension UiPath pour Firefox est bien installée et activée :

  1. Dans Mozilla Firefox, rendez-vous dans Modules complémentaires > Extensions.
  2. Si l'extension ne s'y trouve pas, procédez à son installation selon les instructions qui se trouvent ici.
  3. Vérifiez que la version de l'extension UiPath est à jour.

Quelques précautions à suivre :

  1. Dans Mozilla Firefox, rendez-vous dans Modules complémentaires > Extensions.
  2. Ouvrez le Gestionnaire des tâches ou l'Explorateur de processus.
  3. Vérifiez que le processus ChromeNativeMessaging.exe n'est pas en cours d'exécution.
    Remarque : un autre processus de type ChromeNativeMessaging est exécuté dans le cadre de l'extension Chrome : il faut donc fermer Google Chrome au moment de cette vérification.
Si (If) ChromeNativeMessaging n'est pas en cours d'exécution :
  1. Dans Mozilla Firefox, rendez-vous dans Modules complémentaires > Extensions.
  2. Supprimez manuellement l'extension UiPath en cliquant sur le bouton Remove (Supprimer).
  3. Effectuez sa réinstallation, comme expliqué ici.

Si le problème n'est toujours pas résolu après ces manipulations, utilisez le journal de traçage de l'extension UiPath pour essayer d'obtenir plus d'informations sur les erreurs enregistrées. Vous trouverez ci-dessous des exemple de types de traces qui peuvent être recueillies et analysées.

Pour les traces d'extension générales dans Mozilla Firefox:


Allez à Ouvrez le menu > Développeur Web > Console du navigateur (Ctrl + Shift + J). La console navigateur s'affiche. Toutes les erreurs générées par l'extension sont affichées ici.

Pour obtenir les informations de traçage de la page Web que vous souhaitez automatiser :


Allez à Ouvrir le menu > Développeur Web > Console Web (Ctrl + Shift + K). Le Web Console est affiché. Toutes les erreurs de la page Web actuelle sont affichées ici.

Pour obtenir toutes les informations de traçage (et pas seulement les erreurs), suivez les instructions suivantes :

  1. Ouvrez l'Éditeur du Registre.
  2. Recherchez la clé suivante : HKEY_CURRENT_USER\SOFTWARE\UiPath.
  3. Double-cliquez sur la valeur WebExtensionTrace DWORD. La fenêtre Modifier la valeur DWORD (Edit DWORD Value) s'affiche.
  4. Dans le champ Données de la valeur (Value Data) , indiquez une valeur de 1 et cliquez sur OK (OK) pour enregistrer les modifications.
    Remarque : si la valeur WebExtensionTrace REG_DWORD n'existe pas, vous devrez alors la créer : cliquez sur le module de droite avec un clic-droit avec la souris, puis sélectionnez Nouveau > Valeur DWORD (32 bits) (New > DWORD (32-bit) Value) et indiquez les valeurs mentionnées ci-dessus.

Vérifiez si des données manquent dans l'Éditeur du Registre :

  1. Ouvrez l'Éditeur du Registre.
  2. Recherchez la clé suivante : HKEY_CURRENT_USER\SOFTWARE\Mozilla\NativeMessagingHosts\com.uipath.chromenativemsg.
  3. Ouvrez la valeur REG_SZ (Default). la fenêtre Modifier la chaîne (Edit String) s'affiche et doit contenir un chemin sur ce modèle : C:\Users\YOUR_USER_NAME\AppData\Local\UiPath\uipath-ff.json.
  4. Ouvrez le fichier .json à partir du répertoire indiqué ci-dessus avec un éditeur de texte de type Notepad++.
  5. Vérifiez que la propriété du chemin (path) mène bien au fichier ChromeNativeMessaging.exe et qu'elle ressemble à : C:\Program Files (x86)\UiPath Studio\UiPath\BrowserExtension\ChromeNativeMessaging.exe

Profils de navigateur multiples

À partir de la version 2023.10 d'UiPath, l'extension UiPath pour Firefox prend en charge l'automatisation de plusieurs instances de navigateur s'exécutant avec plusieurs profils d'utilisateur en même temps.

Remarque : l'automatisation de plusieurs profils de navigateur nécessite UiPath.UIAutomation.Activities v23.10 ou une version plus récente, ainsi qu'une extension de navigateur installée avec UiPathStudio.msi v23.10 ou une version plus récente.

L'ouverture du navigateur avec un profil spécifique est désormais possible lors de l'utilisation de l'activité Utiliser l'application/le navigateur (Use Application/Browser). Pour spécifier un profil au démarrage du navigateur, vous devez ajouter un argument à la ligne de commande du navigateur. Pour ce faire, utilisez la propriété Arguments dans la section d'entrée Cible d'application unifiée (Unified Application Target).

Pour Firefox, l'argument requis est : -profile "full_profile_path". Pour récupérer le chemin d'accès complet au profil, accédez à about:profiles et récupérez le répertoire racine de ce profil.


Cette page vous a-t-elle été utile ?

Obtenez l'aide dont vous avez besoin
Formation RPA - Cours d'automatisation
Forum de la communauté UiPath
Uipath Logo White
Confiance et sécurité
© 2005-2025 UiPath Tous droits réservés.