Foire aux questions

Pourquoi le délai d'expiration du test ne s'applique-t-il pas?

Lorsque vous créez un test de navigateur, vous pouvez définir un délai d'expiration afin de vous assurer que le test échoue si son exécution dépasse la durée spécifiée. Toutefois, le paramètre de délai d'expiration ne s'applique que si la valeur est inférieure à BROWSERSCRIPT_TIMEOUT, dont la valeur par défaut est de 5 minutes. délai d'expiration de la configuration

Pourquoi un script enregistré dans l' Selenium. peut ne pas s'exécuter correctement sur Instana

Selenium Les tests enregistrés risquent d'échouer sur Instana si des cookies et l'historique sont présents dans vos navigateurs Web; les fenêtres contextuelles telles que « Accepter les cookies » pourraient ne pas s'afficher sur vos sites Web. Pour éviter ce problème, utilisez un exécuteur local de script de navigateur synthétique ( Instana ) afin de tester votre script en local après l'avoir créé.

Grâce au script de navigation synthétique d' Instana, vous pouvez effectuer les tâches suivantes :

  • Effacer automatiquement les profils utilisateur : même si vos scripts s'exécutent correctement en local grâce au plug-in IDE d' Selenium, ils risquent de ne pas fonctionner sur Instana en raison des fenêtres contextuelles. Vous devez fermer la fenêtre en incrustation avant d'effectuer une action. A l'aide de l'exécuteur local Synthetic-browser-script, les profils utilisateur sont automatiquement effacés. Il n'est pas nécessaire de supprimer manuellement les cookies de votre navigateur.
  • Tester les API de test de navigateur étendues d' Instana : si vous souhaitez utiliser les API de test de navigateur étendues d' Instana, vous pouvez utiliser l'exécuteur local « Synthetic-browser-script » pour les tester. L'environnement d'exécution du programme d'exécution local « Synthetic-browser-script » est identique à celui du moteur de navigateur « Synthetic » d' Instana.

Selenium IDE est un outil d'enregistrement open-source pour générer des localisateurs tels que des sélecteurs CSS, XPath, ID, etc. Selenium L'IDE permet d'identifier les éléments web. Cependant, il présente les limites suivantes :

Testez votre script en local à l'aide de l'exécuteur local « Synthetic-browser-script », fourni par Instana. Avec cet outil, vous pouvez voir que l'interface utilisateur du navigateur complet vous invite à effectuer vos actions dans les scripts de test pour vous aider à déboguer et à résoudre les problèmes. Si votre logique de test est complexe, par exemple si elle comporte des boucles, vous pouvez également essayer d'utiliser les tests de script de navigateur synthétiques d' Instana, disponibles à l'adresse JavaScript-based. Comment ajouter des étapes manuelles pour soutenir Shadow DOM et ainsi de suite, voir les autres sections de cette rubrique.

Comment résoudre l'erreur « L'élément n'est pas cliquable »

Le test peut échouer avec l'un des messages d'erreur suivants:

  • is not clickable at point (285,436) because another element <li> obscures it
  • Failed to execute command clickElement {} element not interactable.

Pour résoudre ce problème, déplacez votre souris pour mettre en évidence l'élément. Vous pouvez utiliser l'une des méthodes suivantes.

Faites défiler pour voir et cliquez

Pour faire défiler l'écran et cliquer dessus, utilisez la commande JavaScript suivante:

let element = await $browser.waitForAndFindElement(By.xpath(`//a[contains(.,'Customer stories')]`), 30000);
await $browser.executeScript(`arguments[0].scrollIntoView()`, element);
await $browser.executeScript(`arguments[0].click()`, element);
 

Pour un script enregistré dans l'IDE d' Selenium, vous pouvez utiliser runScript ou executeScript pour appeler les API étendues d' Instana et utiliser le même code JavaScript :

{
"id": "b345d354-1d95-45d0-81ab-7c78695ed040",
"comment": "",
"command": "runScript",
"target": "let element = await $browser.waitForAndFindElement(By.xpath(`//a[contains(.,'Customer stories')]`), 30000); await $browser.executeScript(`arguments[0].scrollIntoView()`, element); await $browser.executeScript(`arguments[0].click()`, element)",
"targets": [],
"value": ""
},
 

Pour un script IDE d' Selenium, utilisez un exécuteur local pour tester ou mettre en œuvre les API avancées d' Instana. Par exemple, $browser.waitForAndFindElement parce que l'IDE d' Selenium ne les reconnaît pas. Si vous souhaitez tout de même exécuter ou tester vos scripts à l'aide de l'IDE d' Selenium, vous pouvez essayer le code JavaScript présenté dans l'exemple suivant. La commande runScript utilise document.querySelector, qui peut être reconnu par les navigateurs. Pour un exemple de script, consultez la section « Comment faire défiler vers le bas et cliquer sur la page suivante dans les résultats de recherche d' Google ».

{
"id": "d13e50bd-f698-4a04-9420-701a21dcde8d",
"comment": "",
"command": "waitForElementPresent",
"target": "css=#pnnext > span:nth-child(2)",
"targets": [],
"value": "20000"
},
{
"id": "b345d354-1d95-45d0-81ab-7c78695ed040",
"comment": "",
"command": "runScript",
"target": "const el = document.querySelector('#pnnext > span:nth-child(2)'); el.scrollIntoView(); el.click();",
"targets": [],
"value": ""
}
 

ActionChains

Pour se déplacer vers l'élément et cliquer, utilisez ActionChains:

let element = await $browser.waitForAndFindElement($driver.By.linkText(`Business to business (BtoB) activities`), 10000);
await $browser.actions().move({origin: element}).click().perform();
 

MouseOver dans un script IDE d' Selenium

Pour plus d'informations sur l'événement « mouseover » dans le script de l'IDE d' Selenium, consultez la commande MouseOver.

Pour utiliser MouseOver dans un script IDE Selenium :

{
"id": "2d5c6b52-d2d7-4592-8052-87572a09e58b",
"comment": "",
"command": "mouseOver",
"target": "xpath=//dds-megamenu-category-link[contains(.,'Bridge observability and automated resource management')]",
"targets": [],
"value": ""
},
 

MouseOver est analysé comme indiqué dans le code suivant:

await driver.wait(until.elementLocated(By.xpath(`//dds-megamenu-category-link[contains(.,\'Bridge observability and automated resource management\')]`)), configuration.timeout);
await driver.findElement(By.xpath(`//dds-megamenu-category-link[contains(.,\'Bridge observability and automated resource management\')]`))
.then(element => {
    return driver.actions({
      bridge: true
    }).move({
      origin: element
    }).perform();
  });
 

Taille raisonnable de la fenêtre

La taille de la fenêtre peut être inhabituelle lorsque vous enregistrez des scripts avec Selenium IDE. Cela peut provoquer l'erreur element not interactable ou not clickable at point lorsque vous exécutez des tests sur Instana.

Pour résoudre ce problème, essayez l'une des étapes suivantes :

  • Supprimer la commande setWindowSize. Instana permettra de modifier la taille de la fenêtre. Votre script peut toujours s'exécuter correctement dans l'IDE d' Selenium.
  • Définissez la taille maximale de la fenêtre en utilisant le code JavaScript. Utilisez le programme d'exécution local pour le tester, comme le montre l'exemple suivant :
{
"id": "4f719a79-aa76-4dc8-a18b-7b46523ae0e6",
"comment": "",
"command": "executeScript",
"target": "await $browser.manage().window().maximize();",
"targets": [],
"value": ""
},
 

Comment résoudre l'erreur « StaleElementReferenceError »

Vous pouvez rencontrer l'erreur StaleElementReferenceError: stale element reference: element is not attached to the page document. Il s'agit d'une erreur courante de type « Selenium ».

Cette erreur se produit lorsque votre script de test fait référence à un élément Web qui n'est plus associé au DOM, ce qui peut arriver avec les pages Web utilisant des frameworks tels qu' React ou Vue. Pour résoudre ce problème, voir les exemples.

Vérifier si vos localisateurs sont capables d'identifier des éléments Web uniques

Ce problème peut survenir parce que votre localisateur renvoie plusieurs éléments web et qu'il ne peut pas identifier les éléments uniques. Un localisateur peut être un sélecteur CSS, XPath, ID, etc. Il s'agit de l'expression figurant dans la Target propriété de l'IDE d' Selenium. Dans l'exemple suivant, le sélecteur CSS a[href*='/#/home'] span renvoie plusieurs éléments Web, ce qui peut entraîner l'échec du test en raison d'une référence à un élément obsolète. Pour tester vos localisateurs, entrez-les dans le navigateur, allez dans Plus d'outils > Outils du développeur Web. Un bon localisateur peut mettre en évidence l'élément web unique. Vous pouvez mettre à jour ou modifier vos critères de recherche si vous obtenez plusieurs résultats correspondants, comme le montre l'exemple suivant. localisateurs de tests

Pour sélectionner différents localisateurs avec Selenium IDE, cliquez sur la propriété Target. Envisagez de choisir un localisateur significatif, quelle que soit la position de l'élément web. Un bon localisateur est capable d'identifier les éléments Web spécifiques, quelle que soit la taille de la fenêtre ou le positionnement de l'interface utilisateur. localisateurs Selenium

Retrouver l'élément après son ajout au DOM

Vous pouvez vous débarrasser de la référence actuelle que vous détenez et la remplacer, éventuellement en localisant à nouveau l'élément après qu'il a été attaché au DOM.

Outre le point 1, l'élément web peut être périmé pour l'une des raisons suivantes :

  • Rafraîchissement de la page
  • Mise à jour du DOM
  • L'emplacement de l'élément web est modifié

L'erreur StaleElementReferenceError peut se produire pour les raisons suivantes :

  • L'élément web sélectionné pour l'interaction n'est plus présent sur la page web HTML.
  • L'élément web sélectionné a été complètement détruit et recréé.

Exemple de code avec StaleElementReferenceError:

// retrieving an input HTML element from the page
let nameHtmlElement = await $browser.findElement(nameInputBy);
// setting a name in the input element
await nameHtmlElement.sendKeys("John");

// refreshing the page
await $browser.navigate().refresh()

// nameHtmlElement is now stale
// trying to set a new name, but this will throw a StaleElementReferenceException
await nameHtmlElement.sendKeys("Maria");
 

Pour résoudre ce problème, essayez de retrouver l'élément avant de l'utiliser.

// refreshing the page
await $browser.navigate().refresh()
nameHtmlElement = await $browser.findElement(nameInputBy);
await nameHtmlElement.sendKeys("Maria");
 

Certains utilisateurs ont recours à des solutions de type "try-catch-retry". Vous pouvez utiliser la stratégie de nouvelle tentative sur Instana. Si vous définissez Stratégie de répétition comme Répétition deux fois, lorsque le test échoue, il est répété jusqu'à deux fois. Vous pouvez également rechercher StaleElementReferenceError pour trouver d'autres solutions dans le domaine des tests de navigateur afin d'y remédier dans le code de votre script de test.

En attente de l'actualisation de la page

Si le problème n'est toujours pas résolu, essayez d'utiliser la commande pause ou await $browser.sleep pour attendre quelques secondes jusqu'à ce que la page ou l'iframe soit rafraîchie. Avant de localiser des éléments et de les utiliser, attendez que la page soit "statique" pour éviter le problème des références périmées. Prendre un peu pause de temps et recourir à une Retry stratégie d' Instana pourrait permettre d'éviter ce genre de problèmes. Pour utiliser la Retry stratégie « Instana », vous pouvez définir le nombre de tentatives de réessai sur la page de configuration des tests de l' Instana, en le réglant sur 1 ou 2. Votre test est ensuite exécuté au maximum trois fois jusqu'à ce qu'il aboutisse, avant que le résultat ne soit envoyé au backend Instana.

// wait 5 seconds OR wait until tab is visible
// click the tab
// wait 5 seconds OR wait until button is visible
// Click button
await $browser.sleep(5000);
 
{
"id": "75135e0f-5f38-4004-b0f2-fda657d73bb3",
"comment": "",
"command": "pause",
"target": "2000",
"targets": [],
"value": ""
},
 

La recherche de mots-clés dans GitHub est illustrée dans l 'exemplede script.

Pour résoudre cette stale element reference erreur, utilisez les pause commandes waitForElementPresent et :

  • Ajoutez la commande pause pour attendre que la page soit rafraîchie avant de changer d'onglet.
  • Ajoutez la commande waitForEelementPresent pour attendre que la liste de suggestions apparaisse avant de saisir des caractères dans le champ.

solution de sélénium solution de sélénium

Comment vérifier les résultats des tests

Comment vérifier si votre scénario de test a réussi ?

Dans le champ de test du navigateur, utilisez Assertions, Attente explicite pour vérifier les résultats de vos tests. Vous pouvez ainsi vous assurer que votre page web est chargée et affichée comme prévu. Grâce aux tests de navigateur d' Instana, vous pouvez également générer des captures d'écran de vos sessions de test et consulter les journaux de la console (commande Echo dans les scripts enregistrés d' Selenium ), les journaux du navigateur et le graphique chronologique.

Les commandes suivantes peuvent être utiles :

{
      "id": "938df959-9b65-4ae4-a2f5-59be6188ea5f",
      "comment": "This is how to sleep for 5 seconds.",
      "command": "pause",
      "target": "5000",
      "targets": [],
      "value": ""
},
{
    "id": "2d5c6b52-d2d7-4592-8052-87572a09e58b",
     "comment": "This is how to take screenshot",
     "command": "executeScript",
     "target": "await $browser.takeScreenshot()",
     "targets": [],
     "value": ""
}
 

Vous pouvez également essayer les commandes d'assertion suivantes :

{
    "id": "46eb59c2-5fd6-4481-b3e8-eaaddab79a69",
    "comment": "This is one type of Assertions in browser testing",
    "command": "assertTitle",
    "target": "instana - Google Search",
    "targets": [],
    "value": ""
}
 

L'exemple suivant montre comment utiliser Explicit Wait pour vérifier votre test dans un script de navigateur :

await $browser.waitForAndFindElement($driver.By.xpath(`//h1[contains(text(), 'Websites & mobile apps')]`), 30000)
await $browser.wait($driver.until.titleContains(`Websites – Websites & mobile apps`), 30000);
 

Essayez d'ajouter les commandes suivantes dans votre fichier d'enregistrement :

{
      "id": "615cb3e5-fe2a-4859-b0aa-9df52f22028f",
      "comment": "This is Explicit Wait in browser testing",
      "command": "waitForElementPresent",
      "target": "id=mainmenu",
      "targets": [],
      "value": "30000"
},
{
      "id": "03e23d25-38e3-4051-81ff-740109350ee8",
      "comment": "This is how to add logging message in console logs",
      "command": "echo",
      "target": "Verify UI dashboard",
      "targets": [],
      "value": ""
}
 

Comment passer en mode « frame » ou « iframe »

Si votre site Web utilise des cadres, vous risquez de rencontrer l'erreur aucun élément de ce type .

Pour résoudre ce problème, passez à l'armoire ou à l'iframe avec $browser.switchTo().frame(id: number | WebElement);.

Pour passer au cadre ou à l'iframe dans le cadre du test du script du navigateur Instana :

let frameElement = await $browser.waitForAndFindElement($driver.By.xpath('//*[contains(@id, "pop-frame")]'), 10000);
await $browser.switchTo().frame(frameElement);
 

Comment trouver des éléments Web

Pour rechercher des éléments Web, consultez la documentation disponible à l'adresse Selenium concernant les stratégies de localisation.

Fonction Description
$browser.waitForAndFindElement($driver.By.id("boxyear"), 1000) Attendre et rechercher l'élément par ID jusqu'à ce que l'élément soit visible ou que la valeur de délai d'attente soit atteinte
$browser.findElements($driver.By.css('select')) Recherche de plusieurs éléments sur la page à l'aide du sélecteur CSS
$browser.findElement($driver.By.linkText("About")) Rechercher un élément par linkText
$browser.findElement($driver.By.xpath('//input[@value='f']')) Rechercher un élément par XPath

Le format du sélecteur CSS est By.css(element[attribute='attribute-value']).

Le format de l'expression XPath est By.xpath("//element[@attribute='value']") ou By.xpath("//*[@attribute='value']").

Pour rechercher un élément par attributs, par exemple <a href="mysite.com"></a>, exécutez:

// CSS selector
$driver.By.css(a[href*="example"] )
 
// XPath expression
$driver.By.xpath("//a[contains(@href,'Electronics')]")
$driver.By.xpath(`//dds-footer-nav-item[contains(.,'Developer education')]`)
 

Pour changer de localisateur par défaut dans le plug-in de l'environnement de développement intégré Selenium , cliquez sur la cible.

Selenium -localisateurs

Comment sélectionner un élément dans la liste déroulante

Vous pouvez sélectionner un élément dans une liste déroulante en utilisant la commande select. Avec la propriété Value, vous pouvez sélectionner une valeur parmi une série d'options avec label=, value=, id=, ou index=. Si aucun préfixe n'est fourni, une correspondance sur le label est utilisée. Utilisez label, value ou id au lieu de index. Sinon, les résultats entre Instana et l'IDE de Selenium risquent de ne pas être compatibles.

L'exemple suivant montre comment sélectionner June dans la liste déroulante à l'aide de la commande select. Les méthodes permettant de sélectionner l'option Juin sont indiquées aux lignes 3, 4 et 5. Ces méthodes fonctionnent sur l'IDE d' Selenium et sur Instana.

<select id="month" name="month" class="inline six" onchange="document.cf.typ[1].checked=true">
  <option value="1">January</option>
  <option value="2">February</option>
  <option value="3">March</option>
  <option value="4">April</option>
  <option value="5">May</option>
  <option value="6">June</option>
  <option value="7">July</option>
  <option value="8" selected="">August</option>
  <option value="9">September</option>
  <option value="10">October</option>
  <option value="11">November</option>
  <option value="12">December</option>
</select>
 

Selenium-sélectionner

Comment résoudre l'erreur « Élément introuvable »

L'attente explicite est une bonne pratique bien établie en matière d' Selenium, qui permet d'éviter les no such element erreurs et de réduire les temps d'attente ou de mise en veille. L'attente explicite est préférée par rapport à l'attente implicite et à $browser.sleep.

Pour utiliser l'attente explicite sur l' Instana, exécutez les commandes comme indiqué dans les exemples suivants :

// wait until the title comes out
await $browser.wait($driver.until.titleContains('Year 2023 Calendar'), 10000);

// Call the wait function.
await $browser.wait(function () {
    return $browser.getTitle().then(function (title) {
      return title.includes("Google");
    });
  }, 10000);

await $browser.wait(async function () {
    const title = await $browser.getTitle();
    return title.includes("Google");
  }, 10000);

// waitForAndFindElement API
const cookies = await $browser.waitForAndFindElement(
    $driver.By.id(`truste-consent-button`),
    30000
);
await cookies.click();
 

Dans le script de l'IDE Selenium, vous pouvez utiliser la commande WAIT comme indiqué dans l'exemple suivant. Entrez le temps d'attente en millisecondes pour la propriété value.

{
"id": "d13e50bd-f698-4a04-9420-701a21dcde8d",
"comment": "",
"command": "waitForElementPresent",
"target": "id=result-stats",
"targets": [
    ["id=result-stats", "id"],
    ["css=#result-stats", "css:finder"],
    ["xpath=//div[@id='result-stats']", "xpath:attributes"],
    ["xpath=//div[@id='slim_appbar']/div/div", "xpath:idRelative"],
    ["xpath=//div[7]/div/div/div/div/div", "xpath:position"]
],
"value": "10000"
}
 

Comment réaliser une capture d'écran à l'aide du script IDE d' Selenium

Pour appeler les API étendues de l' Instana, exécutez la commande runScript executeScript ou à l'aide des scripts de l'IDE Selenium.

{
"id": "e781c454-0080-447a-b905-7183443956f3",
"comment": "",
"command": "runScript",
"target": "await $browser.takeScreenshot()",
"targets": [],
"value": ""
}
 

Comment gérer les listes déroulantes dans les tests de navigateur synthétiques

Les éléments de la liste déroulante sont sélectionnés avec findElement et cliqués.

<select id="month" name="month" >
<option value="1">January</option>
<option value="2">February</option>
<option value="3">March</option>
...
</select>

// find element by css or xpath
await $browser.findElement($driver.By.css(`#month > option:nth-child(3)`)).click();
await $browser.findElement($driver.By.xpath(`//select[@id='month']/option[3]`)).click();

// wait until element located and do assertion
await $browser.wait($driver.until.elementLocated($driver.By.id("month")), 3000).click();
assert.equal(5, await $browser.findElement($driver.By.id("month")).getAttribute("value"));
await $browser.findElement($driver.By.xpath("//select[@id='month']/option[3]")).click();
assert.equal(3, await $browser.findElement($driver.By.id("month")).getAttribute("value"));
 

Comment gérer les éléments Shadow DOM

Pour tester les éléments DOM de l'ombre, utilisez la fonction getShadowRoot() .

Remarque : cette getShadowRoot() fonction est prise en charge dans les versions suivantes d' Instana : Synthetic PoP, Helm, chart 1.1.1 ou ultérieures. Vous devez mettre à niveau votre instance de Synthetic PoP vers la version 1.1.1 ou une version ultérieure pour pouvoir utiliser l'interaction Shadow DOM.

Pour utiliser la fonction getShadowRoot() , exécutez la commande suivante:

let shadowHost = await $browser.waitForAndFindElement(shadowHostSelector, timeout);
let shadowRoot = await shadowHost.getShadowRoot();
let element = await shadowRoot.findElement(elementSelector);
console.log("element text is:", await element.getText(), ", id is:", await element.getId());
 

Ou utilisez les API avancées d' Instana s dans les scripts enregistrés de l'IDE d' Selenium, puis utilisez le moteur d'exécution local pour les tester :

{
"id": "4f602785-2a19-4b5f-a23c-7ae6f6e58d5d",
"comment": "",
"command": "executeScript",
"target": "let shadowHost = await $browser.waitForAndFindElement($driver.By.css(`.field > q2-input`), 10000); let shadowRoot = await shadowHost.getShadowRoot(); let element = await shadowRoot.findElement($driver.By.css(`*[type='text']`)); await element.sendKeys(`user1`); ",
"targets": [],
"value": ""
},
 

Comment vérifier le texte d'une page à l'aide d'une correspondance partielle

Pour vérifier le texte de votre page avec une correspondance partielle, vous pouvez utiliser findElement par XPath.

Vérification du contenu de la page lors du test du script du navigateur

Pour vérifier le contenu de la page dans le test de script du navigateur:

let element = await $browser.findElement(By.xpath(`//h1[contains(text(), 'Action Result')]`));
console.log("Found element:", await element.getTagName(), ", element text is:", await element.getText());

await $browser.waitForAndFindElement(By.xpath(`//label[contains(text(), 'Action Result')]`), 5000);
console.log(">>>>>>>>>>>>>>>>>>>", "Action Result found");
 

Vérification du contenu des pages lors du test du script enregistré dans l'IDE d' Selenium

Pour vérifier le contenu de la page dans le test de script enregistré de l'IDE Selenium :

{
"id": "4cbe70ec-48b2-4e57-97cf-6d855fa0f08f",
"comment": "",
"command": "waitForElementVisible",
"target": "//h1[contains(text(), \"Selenium automates\")]",
"targets": [],
"value": "30000"
}
 

Selenium-commande

Comment se connecter à des sites web avec l'authentification à deux facteurs

Pour les tests de script BrowserScript et Selenium SIDE, l' 2FA (authentification à deux facteurs) est prise en charge pour la connexion aux sites Web.

Pour consulter le script de test complet, voir l'exemple disponible à l'adresse BrowserScript et l'exemple SIDE disponible à l'adresse Selenium.

Pour tester le script ou l'exécuter localement, remplacez les variables url et $secure du fichier synb.json par les valeurs réelles.

Pour passer à l' 2FA, procédez comme suit:

  1. Obtenez la clé secrète TOTP (Time-based One-Time Password), un secret partagé généré de manière aléatoire entre vous et le site Web pour créer le jeton TOTP permettant de se connecter au site Web avec l'authentification à deux facteurs (2FA). Cette clé secrète est généralement fournie sous la forme d'un code QR ou d'un code numérique lors de la configuration initiale de 2FA. Pour obtenir le code numérique, cliquez sur l'un des liens d'aide suivants sur la page de configuration de l'authentification à deux facteurs:
    • Impossible de scanner le code QR
    • Problème lors du scannage ? Entrez un code à la place.
  2. Pour protéger votre clé secrète, créez des identifiants synthétiques pour la clé secrète TOTP en utilisant l' API ouverte Instana.
  3. Lors de votre test de navigateur, $browser.generateTOTPToken(key: string) utilisez l' API de test de navigateur pour générer un jeton TOTP à durée limitée à saisir.
    • Pour utiliser BrowserScript pour l'authentification 2FA :
      let totp_token = $browser.generateTOTPToken($secure.totpKey);
      await findElementByIdAndSendKeys("password", totp_token);
       
    • Pour utiliser le script SIDE Selenium pour l'authentification 2FA :
      {
         "id": "ec51296b-4d16-4167-ac83-ba87f89cc0c7",
         "comment": "Generate a TOTP token from a TOTP key",
         "command": "executeScript",
         "target": "return $browser.generateTOTPToken($secure.totpKey);",
         "targets": [],
         "value": "totpToken"
      }, {
         "id": "3cbc306a-ed33-46bf-9923-92752b0466f2",
         "comment": "",
         "command": "type",
         "target": "id=password",
         "targets": [],
         "value": "${totpToken}"
      },