Référence de l'API

Vous pouvez afficher des informations de référence pour les API de test de navigateur.

Actions

Cette fonction de test de navigateur API crée une nouvelle séquence d'actions à l'aide de l' WebDriver. La séquence n'est soumise à l'exécution qu'une fois que vous avez appelé la fonction ` Actions.perform ()` dans votre code.

Paramètres

Paramètres Type Description
RETURN Actions Nouvelle séquence d'actions pour cette instance.
options Object Options de configuration de la séquence Actions .

Exemples

Exemple 1: Pour cliquer, utilisez le code suivant:

const element = await $browser.waitForAndFindElement(by, timeout);
$browser.actions().move({origin: element}).press().release().perform();

Exemple 2: Pour placer la souris sur un élément de navigateur, utilisez le code suivant:

const element = await $browser.waitForAndFindElement(by, timeout);
$browser.actions().move({origin: element, duration: 2000}).perform();

Pour être compatible avec l'ancienne fonction mouseMove , utilisez la commande suivante:

$browser.actions().mouseMove(element).perform();
Remarque : les API de test des navigateurs prennent en charge la $browser.actions().mouseMove() méthode pour assurer la compatibilité avec une version antérieure et implémentent la méthode avec $browser.actions().move() car celle-ci a été supprimée par Selenium en 2021 dans cette pull request.

Exemple 3: Pour envoyer des clés, exécutez le code suivant:

await $browser.get("http://www.bing.com");
await $browser.actions().sendKeys("synthetic").perform();

addHeader

Cette API de test de navigateur modifie l'en-tête des requêtes adressées à HTTP.

Utilisation

$browser.addHeader(key: string, val: string): Promise<void>;

Paramètres

Paramètres Type Description
RETURN Promise<void> La valeur renvoyée est une promesse.
key string Nom de l'en-tête « HTTP ».
val string La valeur de l'en-tête « HTTP ».

Exemples

await $browser.addHeader(
  "User-Agent",
  "Mozilla/5.0 (iPhone; CPU OS 10_15_5 (Ergänzendes Update) like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.1.1 Mobile/14E304 Safari/605.1.15"
);

await $browser.get("https://www.yahoo.com/");
await $browser.takeScreenshot();

await $browser.addHeader(
  "User-Agent",
  "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:86.0) Gecko/20100101 Firefox/86.0"
);

await $browser.get("https://www.yahoo.com/");
await $browser.takeScreenshot();

addHeaders

Cette API de test de navigateur modifie l'en-tête des requêtes adressées à HTTP.

Utilisation

$browser.addHeaders(headers: { [key: string]: string }): Promise<void>;

Paramètres

Paramètres Type Description
RETURN Promise<void> La valeur renvoyée est une promesse.
headers { [key: string]: string } En-têtes HTTP

Exemples

await $browser.addHeaders({
  key1: "val1",
  key2: "val2",
});

addHostnamesToDenylist

Cet outil de test de navigateur API ajoute des noms d'hôte à votre liste noire.

Utilisation

$browser.addHostnamesToDenylist(hostnameArr: string[]): Promise<void>
Remarque : la addHostnamesToDenylist fonction ` Instana ` permet de filtrer les éléments de type ` URL `, mais ne supprime pas la addHostnamesToBlacklist fonction `` afin de garantir la compatibilité du code avec les versions antérieures.
$browser.addHostnamesToBlacklist(hostnameArr: string[]): Promise<void>

Paramètres

Paramètres Type Description
RETURN Promise<void> La valeur renvoyée est une promesse.
hostnameArr string[] Nom d'hôte à mettre en correspondance et à prendre en charge les caractères génériques

Exemples

await $browser.addHostnamesToDenylist(["*.css", "*.png"]);
await $browser.addHostnamesToAllowlist(["*"]);

addHostnamesToAllowlist

Cet outil de test de navigateur API ajoute des noms d'hôte à votre liste blanche.

Utilisation

$browser.addHostnamesToAllowlist(hostnameArr: string[]): Promise<void>
Remarque : Instana fournit la addHostnamesToAllowlist fonction permettant de filtrer les éléments de type « URL », mais ne supprime pas cette addHostnamesToWhitelist fonction afin de garantir la compatibilité du code avec les versions antérieures.
$browser.addHostnamesToWhitelist(hostnameArr: string[]): Promise<void>

Paramètres

Paramètres Type Description
RETURN Promise<void> La valeur renvoyée est une promesse.
hostnameArr string[] Nom d'hôte pour la correspondance et la prise en charge des caractères génériques.

Exemples

await $browser.addHostnamesToDenylist(["*.css", "*.png"]);
await $browser.addHostnamesToAllowlist(["*"]);

addHostnameToDenylist

Cette page de test de navigateur API ajoute un nom d'hôte à votre liste noire.

Utilisation

$browser.addHostnameToDenylist(hostname: string): Promise<void>
Remarque : Instana fournit la addHostnameToDenylist fonction permettant de filtrer les éléments de type « URL », mais ne supprime pas cette addHostnameToBlacklist fonction afin de garantir la compatibilité du code avec les versions antérieures.
$browser.addHostnameToBlacklist(hostname: string): Promise<void>

Paramètres

Paramètres Type Description
RETURN Promise<void> La valeur renvoyée est une promesse.
hostname string Nom d'hôte à mettre en correspondance et à prendre en charge les caractères génériques

Exemples

await $browser.addHostnameToDenylist(`*.css`);
await $browser.addHostnameToAllowlist(`*`);

addHostnameToAllowlist

Cette page de test de navigateur API ajoute un nom d'hôte à votre liste blanche.

Utilisation

$browser.addHostnameToAllowlist(hostname: string): Promise<void>
Remarque : la addHostnameToAllowlist fonction ` Instana ` permet de filtrer les éléments de type ` URL `, mais ne supprime pas la addHostnameToWhitelist fonction `` afin de garantir la compatibilité du code avec les versions antérieures.
$browser.addHostnameToWhitelist(hostname: string): Promise<void>

Paramètres

Paramètres Type Description
RETURN Promise<void> La valeur renvoyée est une promesse.
hostname string Nom d'hôte à mettre en correspondance et à prendre en charge les caractères génériques.

Exemples

await $browser.addHostnameToDenylist(`*.css`);
await $browser.addHostnameToAllowlist(`*`);

clearProxy

Cette commande de test du navigateur API efface ou supprime la configuration actuelle du proxy.

deleteHeader

Cet outil de test de navigateur API supprime les en-têtes définis par l'utilisateur.

Paramètres

Paramètres Type Description
RETURN Promise<void> Promesse qui sera résolue à la fin de cette commande.
key string Nom de l'en-tête « HTTP ».

Exemples

await $browser.addHeader('header1-xxx', 'abcd');
await $browser.addHeaders({
    key1: 'val1',
    key2: 'val2',
});
await $browser.deleteHeaders(['key1']);

await $browser.get(`http://localhost:${devport}/header-test`);
let userHeaders: Map<string, any>  = $browser.getHeaders();
console.log("User customized headers: ", [...userHeaders]);
expect(userHeaders.size).toEqual(2);

deleteHeaders

Cet outil de test de navigateur API supprime les en-têtes définis par l'utilisateur.

Utilisation

$browser.deleteHeaders: (header: string[]) => Promise<void>;

Paramètres

Paramètres Type Description
RETURN Promise<void> Promesse qui sera résolue à la fin de cette commande.
header string[] HTTP Noms d'en-têtes.

Exemples

await $browser.addHeader('header1-xxx', 'abcd');
await $browser.addHeaders({
    key1: 'val1',
    key2: 'val2',
});
await $browser.deleteHeaders(['key1']);

await $browser.get(`http://localhost:${devport}/header-test`);
let userHeaders: Map<string, any>  = $browser.getHeaders();
console.log("User customized headers: ", [...userHeaders]);
expect(userHeaders.size).toEqual(2);

deleteHostnameFromDenylist

Cette page de test de navigateur API supprime un nom d'hôte de votre liste noire.

Utilisation

$browser.deleteHostnameFromDenylist(hostname: string): Promise<void>;
Remarque : Instana fournit la deleteHostnameFromDenylist fonction permettant de filtrer les éléments de type « URL », mais ne supprime pas cette deleteHostnameFromBlacklist fonction afin de garantir la compatibilité du code avec les versions antérieures.
$browser.deleteHostnameFromBlacklist(hostname: string): Promise<void>;

Paramètres

Paramètres Type Description
RETURN Promise<void> La valeur renvoyée est une promesse.
hostname string Nom d'hôte à mettre en correspondance et à prendre en charge les caractères génériques.

deleteHostnameFromAllowlist

Ces API de test de navigateur suppriment un nom d'hôte de votre liste d'autorisation.

Utilisation

$browser.deleteHostnameFromAllowlist(hostname: string): Promise<void>;
Remarque : le code ajoute la deleteHostnameFromAllowlist fonction à l' API, mais ne supprime pas la deleteHostnameFromWhitelist fonction afin de garantir la compatibilité du code avec les versions antérieures.
$browser.deleteHostnameFromWhitelist(hostname: string): Promise<void>;

Paramètres

Paramètres Type Description
RETURN Promise<void> La valeur renvoyée est une promesse.
hostname string Nom d'hôte à mettre en correspondance et à prendre en charge les caractères génériques.

deleteHostnamesFromDenylist

Cet outil de test de navigateur API supprime les noms d'hôte de votre liste noire.

Utilisation

$browser.deleteHostnamesFromDenylist(hostnameArr: string[]): Promise<void>
Remarque : Instana fournit la deleteHostnamesFromDenylist fonction permettant de filtrer les éléments de type « URL », mais ne supprime pas cette deleteHostnamesFromBlacklist fonction afin de garantir la compatibilité du code avec les versions antérieures.
$browser.deleteHostnamesFromBlacklist(hostnameArr: string[]): Promise<void>

Paramètres

Paramètres Type Description
RETURN Promise<void> La valeur renvoyée est une promesse.
hostnameArr string[] Nom d'hôte à mettre en correspondance et à prendre en charge les caractères génériques.

deleteHostnamesFromAllowlist

Cet outil de test de navigateur API supprime les noms d'hôte de votre liste blanche.

Utilisation

$browser.deleteHostnamesFromAllowlist(hostnameArr: string[]): Promise<void>
Remarque : Instana fournit la deleteHostnamesFromAllowlist fonction permettant de filtrer les éléments de type « URL », mais ne supprime pas cette deleteHostnamesFromWhitelist fonction afin de garantir la compatibilité du code avec les versions antérieures.
$browser.deleteHostnamesFromWhitelist(hostnameArr: string[]): Promise<void>

Paramètres

Paramètres Type Description
RETURN Promise<void> La valeur renvoyée est une promesse.
hostnameArr string[] Nom d'hôte à mettre en correspondance et à prendre en charge les caractères génériques.

dollar-dollar

La commande $$ est un raccourci permettant d'appeler la commande findElements pour extraire plusieurs éléments sur la page. La commande renvoie un tableau avec des résultats d'élément. Ces résultats comportent un prototype étendu permettant d'appeler des commandes d'action.

Vous pouvez chaîner $ ou $$ ensemble pour naviguer dans l'arborescence DOM.

Pour plus d'informations sur la façon de sélectionner des éléments spécifiques, voir Sélecteurs CSS.

Paramètres

Nom Type Description
RETURN Promise<WebElement[]> La valeur renvoyée est une promesse qui sera résolue avec un tableau de WebElements.
selector String, Function La fonction Selector ou JavaScript permet d'extraire un certain élément.

Exemples

Le fichier index.html est le suivant:

<ul id="menu">
  <li><a href="/">Home</a></li>
  <li><a href="/">Developer Guide</a></li>
  <li><a href="/">API</a></li>
  <li><a href="/">Contribute</a></li>
</ul>

Utilisez $$ pour rechercher les éléments comme suit:

test("should get text a menu link", async () => {
  const menu = (await $browser.$$("#menu"))[0];
  const li = await menu.$$("li");

  console.log(await li[2].$("a").getText()); // outputs: "API"
});

test("should get text a menu link - JS Function", async () => {
  const text = (
    await $browser.$$(function () {
      // Arrow function is not allowed here.
      return document.querySelectorAll("#menu"); // Element[]
    })
  )[0];

  const li3Text = await (await text.$$("li"))[2].$("a").getText();
  console.log(li3Text); // outputs: "API"
});

dollar

La commande $ est un raccourci permettant d'appeler la commande findElement pour extraire un élément unique sur la page. La commande renvoie un objet. L'objet possède un prototype étendu permettant d'appeler des commandes d'action.

Vous pouvez chaîner $ ou $$ ensemble pour naviguer dans l'arborescence DOM.

Pour plus d'informations sur la façon de sélectionner des éléments spécifiques, voir Sélecteurs CSS.

Paramètres

Nom Type Description
RETURN WebElementPromise La valeur renvoyée est un objet de type « WebElementPromise ».
selector String, Function La fonction Selector ou JavaScript pour extraire plusieurs éléments.

Exemples

Le fichier index.html est le suivant:

<ul id="menu">
  <li><a href="/">Home</a></li>
  <li><a href="/">Developer Guide</a></li>
  <li><a href="/">API</a></li>
  <li><a href="/">Contribute</a></li>
</ul>

Utilisez $ pour rechercher l'élément comme suit:

test("should get text a menu link", async () => {
  const text = await $browser.$("#menu").$$("li");
  console.log(await text[2].$("a").getText()); // outputs: "API"
});

test("should get text a menu link - JS Function", async () => {
  const text = await $browser.$(function () {
      // Arrow function is not allowed here.
      return document.querySelector("#menu"); // Element
    }).$$("li");

  console.log(text.$$("li")[2].$("a").getText()); // outputs: "API"
});

exécuter

Cette page de test de navigateur API exécute le code fourni [Command] en utilisant command.Executor la fonctionnalité de l' WebDriver

Utilisation

$browser.execute(command) => Promise<T>

Promise<T> est une promesse qui sera résolue avec le résultat de la commande.

Paramètres

Paramètre Type Description
command Command Commande à planifier

executeAsyncScript

Cette page de test de navigateur API exécute un extrait de code d' JavaScript asynchrone dans le contexte de la fenêtre ou du cadre actuellement sélectionné. Le fragment de script est exécuté en tant que corps d'une fonction anonyme. Si le script est fourni en tant qu'objet de fonction, cette fonction est convertie en chaîne pour l'injection dans la fenêtre cible.

Si vous fournissez des arguments en plus du script, il est inclus en tant qu'arguments de script et peut être référencé à l'aide de l'objet arguments . Les arguments peuvent être un booléen, un nombre, une chaîne ou WebElement. Les tableaux et les objets peuvent également être utilisés comme arguments de script si chaque élément respecte les types indiqués.

Contrairement à l'exécution d' JavaScript s synchrones avec `executeScript`, les scripts exécutés à l'aide de cette fonction doivent signaler explicitement qu'ils ont terminé en lançant la fonction de rappel fournie. Ce rappel est toujours injecté dans la fonction exécutée en tant que dernier argument et peut donc être référencé avec arguments[arguments.length - 1]. Les étapes suivantes sont effectuées pour résoudre la valeur de retour de cette fonction par rapport au premier argument de la fonction de rappel du script:

  • Pour un élément HTML, la valeur est convertie en WebElement.
  • Les valeurs de retour nulles et non définies sont résolues en valeurs nulles.
  • Les valeurs booléennes, les nombres et les chaînes sont résolus tels qu'ils sont.
  • Les fonctions sont résolues en fonction de leur représentation de chaîne.
  • Pour les tableaux et les objets, chaque élément de membre est converti conformément aux règles indiquées.

Utilisation

$browser.executeAsyncScript<T>(script: string|Function, ...var_args: any[]): Promise<T>;

Paramètres

Paramètres Type Description
RETURN Promise.<T> Promesse qui sera résolue avec la valeur de retour du script.
script string, Function Script à exécuter.
...args * Arguments à transmettre au script.

Exemples

Exemple 1: Pour effectuer une mise en veille synchronisée avec la fenêtre actuellement sélectionnée, utilisez les commandes comme illustré dans l'exemple suivant:

const start = new Date().getTime();
$browser.executeAsyncScript(
    "window.setTimeout(arguments[arguments.length - 1], 500);"
  ).then(function () {
    console.log("Elapsed time: " + (new Date().getTime() - start) + " ms");
  });

Exemple 2: Pour synchroniser un test avec une application Ajax, utilisez les commandes comme illustré dans l'exemple suivant:

const button = $browser.$("#compose-button");
button.click();
$browser.executeAsyncScript(
  "var callback = arguments[arguments.length - 1];" +
    "mailClient.getComposeWindowWidget().onload(callback);"
);
$browser.switchTo().frame("composeWidget");
$browser.$("#to").sendKeys("dog@example.com");

Exemple 3: Pour injecter XMLHttpRequest et attendre le résultat, utilisez les commandes suivantes. Dans cet exemple, le script d'injection est spécifié avec un littéral de fonction. Lorsque vous utilisez ce format, la fonction est convertie en chaîne pour l'injection. Par conséquent, la fonction ne doit pas faire référence à des symboles qui ne sont pas définis dans la portée de la page testée.

$browser.executeAsyncScript(function () {
    var callback = arguments[arguments.length - 1];
    var xhr = new XMLHttpRequest();
    xhr.open("GET", "/resource/data.json", true);
    xhr.onreadystatechange = function () {
      if (xhr.readyState == 4) {
        callback(xhr.responseText);
      }
    };
    xhr.send("");
  }).then(function (str) {
    console.log(JSON.parse(str)["food"]);
  });

executeScript

Cet outil de test de navigateur API exécute un extrait du code JavaScript dans le cadre de la fenêtre ou du cadre actuellement sélectionné. Le fragment de script est exécuté en tant que corps d'une fonction anonyme. Si vous fournissez le script en tant qu'objet de fonction, cette fonction est convertie en chaîne à injecter dans la fenêtre cible.

Si vous fournissez des arguments en plus du script, ils sont inclus en tant qu'arguments de script et peuvent être référencés à l'aide de l'objet arguments . Les arguments peuvent être un booléen, un nombre, une chaîne ou WebElement. Les tableaux et les objets peuvent également être utilisés comme arguments de script si chaque élément respecte les types indiqués.

Le script peut faire référence à des variables accessibles à partir de la fenêtre en cours. En outre, le script s'exécute dans le contexte de la fenêtre. Par conséquent, document peut être utilisé pour faire référence au document en cours. Aucune variable locale n'est disponible une fois l'exécution du script terminée, bien que les variables globales soient conservées.

Si le script a une valeur de retour, c'est-à-dire si le script contient une instruction de retour, les étapes suivantes sont effectuées pour résoudre la valeur de retour de cette fonction:

  • Pour un élément HTML, la valeur est convertie en WebElement.
  • Les valeurs de retour nulles et non définies sont résolues en valeurs nulles.
  • Les valeurs booléennes, les nombres et les chaînes sont résolus tels qu'ils sont.
  • Les fonctions sont résolues en fonction de leur représentation de chaîne.
  • Pour les tableaux et les objets, chaque élément de membre est converti conformément aux règles indiquées.

Utilisation

$browser.executeScript<T>(script: string|Function, ...var_args: any[]): Promise<T>;

Paramètres

Paramètres Type Description
RETURN Promise.<T> Promesse qui sera résolue avec la valeur de retour du script.
script string, Function Script à exécuter.
...args * Arguments à transmettre au script.

findElement

Cet outil de test de navigateur API permet de localiser un élément sur la page. Si l'élément est introuvable, le pilote renvoie error.NoSuchElementError.

Utilisation

$browser.findElement(locator: Locator): WebElementPromise;

Paramètres

Paramètres Type Description
RETURN WebElementPromise Un élément WebElement qui peut être utilisé pour émettre des commandes sur l'élément localisé. Si l'élément est introuvable, il est invalidé et toutes les commandes planifiées sont arrêtées.
locator By , function Localisateur à utiliser.

Exemples

Vous ne devez pas utiliser cette fonction pour tester si un élément est présent sur la page. Vous devez plutôt utiliser findElements :

$browser.findElements($driver.By.id("foo"))
  .then((found) => console.log("Element found? %s", !!found.length));

Vous pouvez définir les critères de recherche d'un élément en utilisant l'une des fabriques de l'espace de nom webdriver.By ou en tant qu'objet webdriver.By.Hash de courte durée. Par exemple, les deux instructions suivantes sont équivalentes:

var e1 = $browser.findElement($driver.By.id("foo"));
var e2 = $browser.findElement({ id: "foo" });

Vous pouvez également fournir une fonction de localisation personnalisée, qui prend cette instance en entrée et renvoie un WebElement, ou une promesse qui sera résolue avec un WebElement. Si la promesse renvoyée aboutit à un tableau de valeurs de type ` WebElements, `, ` WebDriver ` utilise le premier élément. Par exemple, pour trouver le premier lien visible sur une page, vous pouvez utiliser les commandes suivantes:

var link = $browser.findElement(firstVisibleLink);

function firstVisibleLink(driver) {
  var links = driver.findElements(By.tagName("a"));
  return promise.filter(links, function (link) {
    return link.isDisplayed();
  });
}

findElements

Cette API de test de navigateur recherche plusieurs éléments sur la page. Pour plus d'informations sur les stratégies de localisation des éléments, voir findElement .

Utilisation

$browser.findElements(locator: Locator): Promise<WebElement[]>;

generateTOTPToken

Cette page de test pour navigateur API génère un jeton de mot de passe à usage unique basé sur le temps (TOTP) à partir d'une clé TOTP. Vous pouvez utiliser cette page API pour vous connecter à l'aide de l'authentification à deux facteurs.

Utilisation

$browser.generateTOTPToken(key: string, options?: TOTPOptions): string;

Paramètres

Paramètre Type Description
RETURN string Un jeton TOTP (Time-based One Password)
key string Une clé TOTP, base32 chaînes
options Object,undefined Facultatif: paramètres facultatifs, par exemple {digits: 8, algorithm: "SHA-512", period: 60}. Les paramètres par défaut sont {digits: 6, algorithm: "SHA-1", period: 30}

Exemples

Exemple 1: Pour générer un jeton TOTP et vous connecter avec l'authentification à deux facteurs dans le test Script de navigateur:

await $browser.waitForAndFindElement($driver.By.id("password"), 15000);

let totp_token = $browser.generateTOTPToken($secure.totpKey);

await $browser.findElement($driver.By.id("password")).then((element) => {
  return element.clear().then(() => {
    return element.sendKeys(totp_token);
  });
});

Exemple 2: Pour générer un jeton TOTP dans le test de script SIDE Selenium :

{
  "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"
}

obtenir

L' API de test de navigateur redirige vers URL.

Paramètres

Paramètres Type Description
RETURN Promise<void> Promesse qui sera résolue à la fin du chargement du document.
url string L'adresse complète URL pour accéder au site.

getAllWindowHandles

Cette API de test de navigateur exécute une commande permettant de récupérer la liste actuelle des descripteurs de fenêtre disponibles.

Paramètres

Paramètre Type Description
RETURN Promise<string[]> Promesse qui sera résolue avec un tableau de descripteurs de fenêtre.

getCapabilities

Cette API de test de navigateur récupère les capacités de cette instance.

Paramètres

Paramètre Type Description
RETURN Promise<Capabilities> Promesse qui sera résolue avec les capacités de cette instance.

getCurrentUrl

Cette page de test de navigateur API exécute une commande permettant de récupérer l'adresse URL de la page actuelle.

Paramètres

Paramètre Type Description
RETURN Promise<string> Une promesse qui sera tenue avec l' URL actuelle.

getHeaders

Cette page de test de navigateur API permet d'obtenir des en-têtes personnalisés par l'utilisateur.

Paramètres

Paramètre Type Description
RETURN Map<string, any> En-têtes définis par l'utilisateur

Exemples

await $browser.addHeader('header1-xxx', 'abcd');
await $browser.addHeaders({
    key1: 'val1',
    key2: 'val2',
});
await $browser.deleteHeaders(['key1']);

await $browser.get(`http://localhost:${devport}/header-test`);
let userHeaders: Map<string, any>  = $browser.getHeaders();
console.log("User customized headers: ", [...userHeaders]);
expect(userHeaders.size).toEqual(2);

getPageSource

Cet outil de test de navigateur API permet d'afficher le code source de la page actuelle. La source renvoyée est une représentation du DOM sous-jacent. Ne vous attendez pas à ce que la source soit formatée ou mise en échappement de la même manière que la réponse brute envoyée par le serveur Web.

Paramètres

Paramètre Type Description
RETURN Promise<string> Promesse qui sera résolue avec la source de la page en cours.

getProxy

Cette page de test du navigateur API permet de récupérer la configuration actuelle du proxy.

Utilisation

$browser.getProxy(): FFProxyConfig | CProxyConfig;

Cette méthode API peut également être appelée via $network l'objet :

$network.getProxy(): FFProxyConfig | CProxyConfig;

Configuration de proxy

/**
 * Firefox extension - An object encapsulating a complete proxy configuration
 * https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/proxy/settings
 */
export interface FFProxyConfig {
  proxyType?: FFProxyType,
  http?: string;
  ssl?: string,
  ftp?: string;
  autoConfigUrl?: string,
  autoLogin?: boolean,
  httpProxyAll?: boolean,
  passthrough?: string,
  proxyDNS?: boolean,
  socks?: string,
  socksVersion?: number,
}

/**
 * Chrome extension - An object encapsulating a complete proxy configuration
 * https://developer.chrome.com/docs/extensions/reference/proxy/#type-ProxyConfig
 */
export interface CProxyConfig {
  mode: CProxyType,
  rules?: {
    bypassList?: string[],
    fallbackProxy?: ProxyServer,
    proxyForFtp?: ProxyServer,
    proxyForHttp?: ProxyServer,
    proxyForHttps?: ProxyServer,
    singleProxy?: ProxyServer,
  },
  pacScript?: {
    data?: string,
    mandatory?: boolean,
    url?: string,
  },
};

getSession

Cette page de test de navigateur API récupère la session de ce client.

Paramètres

Paramètre Type Description
RETURN Promise<Session> Une promesse pour la session de ce client.

getTitle

Cette page de test de navigateur API exécute une commande permettant de récupérer le titre de la page actuelle.

Paramètres

Paramètre Type Description
RETURN Promise<string> Promesse qui sera résolue avec le titre de la page en cours.

getWindowHandle

Cette API de test de navigateur exécute une commande permettant de récupérer le descripteur de la fenêtre active.

Paramètres

Paramètre Type Description
RETURN Promise<string> Promesse qui sera résolue avec le descripteur de fenêtre en cours.

gérer

Cette méthode de test du navigateur API récupère l'interface des options pour cette instance.

Options

Les options fournissent des méthodes de gestion de l'état du navigateur et du pilote.

Type Description
addCookie(spec: IWebDriverOptionsCookie): Promise<void> Planifie une commande pour ajouter un cookie.
deleteAllCookies(): Promise<void>; Planifie une commande de suppression de tous les cookies visibles sur la page en cours.
deleteCookie(name: string): Promise<void>; Planifie une commande de suppression du cookie portant le nom indiqué. Si aucun cookie portant le nom indiqué n'est visible sur la page en cours, cette commande est une commande no-op.
getCookies(): Promise<IWebDriverCookie[]>; Planifie une commande pour extraire tous les cookies visibles sur la page en cours. Chaque cookie est renvoyé sous la forme d'un objet ` JSON `, conformément au protocole de transmission décrit à l'adresse WebDriver.
getCookie(name: string): Promise<IWebDriverCookie>; Planifie une commande pour extraire le cookie avec le nom donné. Renvoie la valeur null si aucun cookie de ce type n'est disponible. Le cookie est renvoyé sous la forme d'un objet ` JSON `, conformément à la description du protocole de transmission ` WebDriver `.
logs(): Logs; Fournit l'interface de gestion des journaux du pilote.
getTimeouts(): Promise<ITimeouts>; Extrait les délais d'attenteen cours.
setTimeouts(timeouts: ITimeouts): Promise<void>; Définit les délais d'attenteen cours.
window(): Window; Fournit l'interface de gestion de la fenêtreen cours.

IWebDriverCookie

Paramètres Type Description
name string Nom du cookie.
value string Valeur du cookie.
path string Chemin du cookie. La valeur par défaut est "/" lorsqu'un cookie est ajouté.
domain string Domaine dans lequel le cookie est visible. Par défaut, l' URL du document du contexte de navigation actuel est utilisée lorsqu'un cookie est ajouté.
secure boolean Le paramètre indique si le cookie est un cookie sécurisé. La valeur par défaut est false, ce qui signifie que le cookie n'est pas un cookie sécurisé.
httpOnly boolean Ce paramètre indique si le cookie est un cookie HTTP uniquement. La valeur par défaut est false, ce qui signifie que le cookie n'est pas un cookie réservé à HTTP.
expiry number L'expiration est toujours renvoyée en secondes depuis l'époque lors de l'extraction des cookies du navigateur.

Temps morts

Paramètre Type Description
script number Indique la durée maximale d'attente pour l'exécution d'un script évalué.
pageLoad number Indique le délai d'attente maximal pour la fin du chargement d'une page. La valeur par défaut est 300000 millisecondes.
implicit number Indique la durée maximale d'attente de la réussite d'un releveur de coordonnées d'élément lors de la localisation d'éléments sur la page. La valeur par défaut est 0 millisecondes.

Fenêtre

export interface ILocation {
  x: number;
  y: number;
}

export interface ISize {
  width: number;
  height: number;
}

export interface IRectangle {
  x: number;
  y: number;
  width: number;
  height: number;
}

Interface permettant de gérer la fenêtre en cours.

Type Description
getPosition(): Promise<ILocation>; Extrait la position actuelle de la fenêtre, par rapport à la partie supérieure gauche de l'écran.
setPosition(x: number, y: number): Promise<void>; Repositionne la fenêtre en cours.
getSize(): Promise<ISize>; Extrait la taille actuelle de la fenêtre.
setSize(width: number, height: number): Promise<void>; Redimensionne la fenêtre en cours.
getRect(): Promise<IRectangle>; Renvoie la taille et la position de la fenêtre de niveau supérieur en cours.
setRect({x, y, width, height}: Partial<IRectangle>): Promise<IRectangle>; Définit la taille et la position de la fenêtre de niveau supérieur en cours. Vous pouvez mettre à jour uniquement la taille en omettant les options x et y ou simplement la position en omettant les options width et height .
maximize(): Promise<void>; Agrandit la fenêtre en cours.

Exemples

let tm = await $browser.manage().getTimeouts();
console.log('current timeout', tm.implicit, tm.pageLoad, tm.script);

await $browser.manage().timeouts().pageLoadTimeout(119);
tm = await $browser.manage().getTimeouts();
expect(tm.pageLoad).toBe(119);
console.log('current timeout', tm.implicit, tm.pageLoad, tm.script);

await $browser.manage().timeouts().pageLoadTimeout(89);
tm = await $browser.manage().getTimeouts();
expect(tm.pageLoad).toBe(89);
console.log('current timeout', tm.implicit, tm.pageLoad, tm.script);

setAuthentication

Cette page de test de navigateur API modifie les paramètres d'authentification pour les prochaines requêtes HTTP.

Utilisation

$browser.setAuthentication(authName: string, authPass: string): Promise<void>;

Paramètres

Paramètres Type Description
RETURN Promise<void> Une promesse est résolue lorsque des paramètres sont appliqués.
authName string Nom d'utilisateur pour l'authentification.
authPass string Mot de passe de l'utilisateur pour l'authentification.

Exemples

await $browser.setAuthentication(basicauthuser, password);
await $browser.get(`http://${httpserver}/basic/page1.html`)
.then(() => $browser.takeScreenshot());

setProxy

Cette page de test de navigateur API configure un serveur proxy qui sera utilisé pour toutes les requêtes HTTP, HTTPS et FTP.

Utilisation

$browser.setProxy(proxyURL: string | URL, noProxy?: string): Promise<void>;

Cette méthode API peut également être appelée via $network l'objet.

$network.setProxy(proxyURL: string | URL, noProxy?: string): Promise<void>

Paramètres

Paramètres Type Description
RETURN Promise<void> Une promesse est résolue lorsque des paramètres sont appliqués.
proxyURL string, URL Une chaîne de caractères de type « URL » permettant de se connecter au serveur proxy. La chaîne « URL » doit respecter le format défini dans la méthode « url.parse » ( urlString ) du nœud. Par exemple, http://proxy_host:8888 ou https://user:pass@proxy_host:8888
noProxy string Facultatif: liste d'hôtes séparés par des virgules qui ignore tous les proxys.

setProxyAdvanced

Cette page de test de navigateur API configure le proxy en utilisant le format pris en charge par Chrome ou l'extension Firefox API pour la gestion du proxy.

Utilisation

$browser.setProxyAdvanced(proxyConfig: CProxyConfig | FFProxyConfig, authName?: string, authPass?: string): Promise<void>;

Cette méthode API peut également être appelée via $network l'objet.

$network.setProxyAdvanced(proxyConfig: CProxyConfig | FFProxyConfig, authName?: string, authPass?: string): Promise<void>;

Paramètres

Paramètre Type Description
RETURN Promise<void> Une promesse est résolue lorsque des paramètres sont appliqués.
proxyConfig CProxyConfig ou FFProxyConfig Un objet de configuration de proxy dans l'encapsulation spécifique à Chrome ou Firefox .
authName string Facultatif: nom d'utilisateur du serveur proxy pour l'authentification.
authPass string Facultatif: mot de passe utilisateur du serveur proxy pour l'authentification.

Exemples

async function testProxyAdvanced() {
  await $browser.clearProxy();
  var ffconfig = {
    proxyType: "manual",
    //proxyType: "autoConfig",
    http: proxy_4,
    ssl: proxy_4,
    ftp: proxy_4,
    autoConfigUrl: pacfile,
    passthrough: noproxy,
    autoLogin: true,
  }

  var pxyserver = {
    host: httpserver,
    port: 8088,
    scheme: "http",
  }

  var cconfig = {
    mode: "fixed_servers",
    rules: {
      bypassList: noproxy.split(','),
      fallbackProxy: {
        host: "my-proxy-server.us.ibm.com",
        port: 8080,
      },
      proxyForFtp: pxyserver,
      proxyForHttp: pxyserver,
      proxyForHttps: pxyserver,
    },
    pacScript: {
      url: pacfile,
    },
  }

  var bname = null;
  await $browser.getCapabilities().then(cap=> {
    bname = cap.getBrowserName();
   });

  var config = (bname == 'chrome') ? cconfig : ffconfig;

  await $browser.setProxyAdvanced(config, proxyuser, password);
  await $browser.get(`http://${httpserver}/demo/page2.html`)
    .then(() => $browser.takeScreenshot());
}

setProxyAuthentication

Cet outil de test de navigateur API modifie les paramètres d'authentification proxy pour les requêtes HTTP, HTTPS et FTP à venir.

Utilisation

$browser.setProxyAuthentication(authName: string, authPass: string): Promise<void>;

Paramètres

Paramètres Type Description
RETURN Promise<void> Une promesse est résolue lorsque des paramètres sont appliqués.
authName string Nom d'utilisateur du serveur proxy pour l'authentification.
authPass string Mot de passe utilisateur du serveur proxy pour l'authentification.

Exemples

async function testProxyAuthentication() {
  await $browser.clearProxy();
  await $browser.setProxy(proxy_3, noproxy);
  await $browser.setProxyAuthentication(proxyuser, password);
  await $browser.get(`http://${httpserver}/demo/page2.html`)
    .then(() => $browser.takeScreenshot());
}

setProxyForHttp

Cette option de test du navigateur API configure un serveur proxy qui sera utilisé pour toutes les requêtes HTTP.

Utilisation

$browser.setProxyForHttp(proxyURL: string | URL, noProxy?: string): Promise<void>

Cette méthode API peut également être appelée via $network l'objet.

$network.setProxyForHttp(proxyURL: string | URL, noProxy?: string): Promise<void>

Paramètres

Paramètre Type Description
RETURN Promise<void> Une promesse est résolue lorsque des paramètres sont appliqués.
proxyURL string, URL Une chaîne de caractères de type « URL » permettant de se connecter au serveur proxy. La chaîne « URL » doit respecter le format défini dans la méthode « url.parse » ( urlString ) de Node. Par exemple, http://proxy_host:8888 ou https://user:pass@proxy_host:8888
noProxy string Facultatif: liste d'hôtes séparés par des virgules qui doivent ignorer tous les proxys.

Exemples

let website;
let proxyServer = "proxyHost:proxyPort";

console.log(">>>>>>>>>>>>>>>>>>>", "Clear proxy configuration");
await $network.clearProxy();
console.log(">>>>>>>>>>>>>>>>>>>", "Set proxy configuration for HTTP request");
await $network.setProxyForHttp(proxyServer);
website = await accessWebSite();
checkHostname("www.google.com.hk", website)

setProxyForHttps

Cette option de test du navigateur API configure un serveur proxy qui sera utilisé pour toutes les requêtes HTTPS.

Utilisation

$browser.setProxyForHttps(proxyURL: string | URL, noProxy?: string): Promise<void>;

Cette méthode API peut également être appelée via $network l'objet.

$network.setProxyForHttps(proxyURL: string | URL, noProxy?: string): Promise<void>;

Paramètres

Paramètre Type Description
RETURN Promise<void> Une promesse est résolue lorsque des paramètres sont appliqués
proxyURL string, URL Une chaîne de caractères de type « URL » permettant de se connecter au serveur proxy. La chaîne « URL » doit respecter le format défini dans la méthode « url.parse » ( urlString ) du nœud. Par exemple, http://proxy_host:8888 ou https://user:pass@proxy_host:8888
noProxy string Facultatif: liste d'hôtes séparés par des virgules qui doivent ignorer tous les proxys.

Exemples

let website;
let sslProxyServer = "username:password@proxyHost:proxyPort";

console.log(">>>>>>>>>>>>>>>>>>>", "Clear proxy configuration");
await $network.clearProxy();
console.log(">>>>>>>>>>>>>>>>>>>", "Set proxy configuration for HTTPS request");
let testURL = new URL("http://" + sslProxyServer);
await $network.setProxyForHttps(testURL);
website = await accessWebSite();
checkHostname("www.google.com", website);

setProxyPAC

Cette page de test de navigateur API configure un serveur proxy à l'aide d'un script PAC (Proxy Auto-Config).

Utilisation

$browser.setProxyPAC(pacScriptURL: string, noProxy?: string, authMap?: Map<string, any>): Promise<void>;

Paramètres

Paramètre Type Description
RETURN Promise<void> Une promesse est résolue lorsque des paramètres sont appliqués.
pacScriptURL string URL s du script PAC.
noProxy string Facultatif: liste d'hôtes séparés par des virgules qui doivent ignorer tous les proxys.
authMap Map Facultatif: mappe des données d'authentification à fournir aux serveurs proxy, qui sont saisies par le Hostname des serveurs proxy. Les valeurs de cette mappe doivent être définies au format {username: "authUsername", password: "authPassword"}.

Exemples

const httpserver = '<DemoServerIP>';
const noproxy = "localhost,google.com,192.168.1.0/24";
const pacfile = `http://${httpserver}/pacfile`;
const authmap = new Map([
  [ httpserver, {username: "proxyuser", password: "passw0rd"} ],
  [ "httpserver2", {username: "user1", password: "passw0rd"} ],
])

async function testProxyPAC() {
  await $browser.clearProxy();
  await $browser.setProxyPAC(pacfile, noproxy, authmap);
  await $browser
    .get(`http://${httpserver}/demo/page2.html`)
    .then(() => $browser.takeScreenshot());
}

mise en veille

Cette API de test de navigateur planifie une commande visant à mettre le pilote en veille pendant une durée déterminée.

Paramètres

Paramètres Type Description
RETURN Promise<void> Une promesse qui sera résolue à la fin du sommeil.
ms number Durée, en millisecondes, de la mise en veille.

Exemples

await $browser.get("https://www.yahoo.com/");
await $browser.sleep(3 * 1000);
await $browser.takeScreenshot();

switchTo

Cette page de test du navigateur API propose une interface permettant de déplacer le focus du pilote vers un autre cadre ou une autre fenêtre.

TargetLocator

Interface permettant de modifier la mise en évidence du pilote dans un autre cadre ou une autre fenêtre.

Méthodes d'instance

Type Description
activeElement(): WebElementPromise; Planifie une commande d'extraction de l'élément document.activeElement sur le document en cours ou document.body si activeElement n'est pas disponible.
defaultContent(): Promise<void>; Planifie une commande pour basculer la mise en évidence de toutes les commandes futures vers le premier cadre de la page. Le cadre cible peut être défini à l'aide de l'une des valeurs suivantes : - Un nombre indiquant un index (à partir de zéro) dans l'objet ` window.frames `. - Une référence ` WebElement `, qui correspond à un frame élément ou iframe DOM. - La null valeur pour sélectionner le cadre situé tout en haut de la page. Le passage d'un null paramètre équivaut à appeler la fonction ` defaultContent `.
frame(id: Number |WebElement| null): Promise<void>; Modifie la mise en évidence de toutes les commandes futures dans un autre cadre de la page.
parentFrame(): Promise<void>; Modifie la mise en évidence de toutes les commandes futures sur le cadre parent du cadre actuellement sélectionné. Cette commande n'a aucun effet si le pilote est déjà mis en évidence sur le contexte de navigation de niveau supérieur.
window(nameOrHandle: string): Promise<void>; Planifie une commande pour basculer la mise en évidence de toutes les commandes futures vers une autre fenêtre. Windows peuvent être spécifiés par leur window.name attribut ou par leur identifiant (tel que renvoyé par la fonction ` getWindowHandle `).
newWindow(typeHint: string): Promise<void>; Crée une fenêtre de navigateur et redirige le focus vers cette nouvelle fenêtre pour les commandes ultérieures de ce pilote. typeHint « fenêtre » ou « onglet ». Il n'est pas garanti que la fenêtre créée soit du type demandé. Si le pilote ne prend pas en charge le type demandé, une nouvelle fenêtre de navigateur s'ouvre, quel que soit le type pris en charge par le pilote. La promesse renvoyée est résolue lorsque le pilote bascule vers la nouvelle fenêtre.
alert(): AlertPromise; Planifie une commande pour mettre en évidence la boîte de dialogue modale active, telle que celles ouvertes par window.alert(), window.confirm()et window.prompt(). La promesse renvoyée est rejetée avec un error.NoSuchAlertError si aucune alerte ouverte n'est disponible.

Exemples

/**
 * samples of getting current window handle
 * switch to a new window
 * open new page in new tab
 */
console.log("Windows handle: ", await $browser.getWindowHandle(), "Current url: ", await $browser.getCurrentUrl());
console.log("switch to calendar tab");
let originalWindow = await $browser.getWindowHandle();
await $browser.switchTo().newWindow();

/**
 * navigate to www.timeanddate.com
 * assert page title by getTitle() api
 * assert page title by getPageSource() api
 */
console.log("Access time and date page");
await $browser.get("http://www.timeanddate.com");
let page = await $browser.getPageSource();
assert.isTrue(page.includes("<title>timeanddate.com</title>"));
console.log("Page title: ", await $browser.getTitle());

/**
 * switch back to original window
 * take screenshot
 */
await $browser.switchTo().window(originalWindow);
await $browser.takeScreenshot();

takeScreenshot

Cette page de test de navigateur API programme une commande permettant de réaliser une capture d'écran. Le pilote tente de renvoyer une capture d'écran des éléments suivants, par ordre de préférence:

  1. Page entière
  2. Fenêtre en cours
  3. Partie visible du cadre en cours
  4. Affichage complet contenant le navigateur

Paramètres

Paramètre Type Description
RETURN Promise<string> Promesse qui sera résolue avec la capture d'écran en tant que PNG codé base-64 .

attente

Cette API de test de navigateur attend qu'une condition soit évaluée à une valeur « vraie ». La condition peut être spécifiée par une condition, en tant que fonction personnalisée ou en tant que condition thenable de type promesse.

Pour une condition ou une fonction, l'attente évalue à plusieurs reprises la condition jusqu'à ce qu'elle renvoie une valeur véridique. Si des erreurs surviennent pendant que l' API e évalue la condition, celles-ci sont autorisées à se propager. Lorsqu'une condition renvoie une promesse, la boucle d'interrogation attend qu'elle soit résolue et utilise la valeur résolue pour vérifier si la condition est satisfaite. Le temps de résolution d'une promesse est toujours pris en compte pour vérifier si une attente est arrivée à expiration.

Si la condition fournie est une expression de type « WebElementCondition, », la fonction «wait» renvoie un objet de type « WebElementPromise » qui pointe vers l'élément ayant satisfait la condition.

Utilisation

$browser.wait(
    condition: WebElementCondition,
    opt_timeout?: number,
    opt_message?: string): WebElementPromise;

Paramètres

Paramètre Type Description
RETURN Promise<string> Promesse qui sera résolue avec la première valeur vraie renvoyée par la fonction de condition ou rejetée si la condition arrive à expiration. Si l'objet d'entrée est une instance d'une classe de type « WebElementCondition, », la valeur renvoyée est une instance de type « WebElementPromise ».
condition IThenable<(T|null)> ou Condition<(T|null)> ou function(WebDriver): (T|null) Condition à attendre, définie en tant que promesse, objet de condition ou fonction à évaluer en tant que condition.
opt_timeout number Durée d'attente, en millisecondes, pour que la condition soit vraie.
opt_message string ou function Message facultatif à utiliser en cas de délai d'attente.

Exemples

Exemple 1: Pour attendre jusqu'à 10 secondes qu'un élément soit présent sur la page, utilisez les commandes comme illustré dans l'exemple suivant:

async function example() {
  let button = await $browser.wait(
    $driver.until.elementLocated($driver.By.id("foo")),
    10000
  );
  await button.click();
}

Exemple 2: Pour attendre un élément et cliquer, utilisez les commandes comme illustré dans l'exemple suivant:

await $browser.wait(until.elementLocated(by), timeout);
const element = await $browser.findElement(by, timeout);
await $browser.wait(until.elementIsVisible(element), timeout, `${by} not visible`);
await $browser.wait(until.elementIsEnabled(element), timeout, `${by} not enabled`);
await element.click();

waitForAndFindElement

Cet API de test de navigateur attend et recherche un élément sur la page, puis attend qu'il devienne visible. S'il est introuvable, la surveillance synthétique renvoie une erreur. La valeur de délai d'attente est facultative. Il est appliqué séparément aux deux tâches de recherche de l'élément et d'attente de sa visibilité. Ainsi, dans le pire des cas, cette méthode peut prendre jusqu'à deux fois la valeur de délai d'attente fournie. La valeur de délai d'attente par défaut est 1000 ms (1 seconde).

Un WebElementPromise est renvoyé si un élément est trouvé avec le releveur de coordonnées indiqué dans les paramètres et que l'élément devient visible, ou si les conditions indiquées ne sont pas remplies dans le timeoutspécifié.

Utilisation

$browser.waitForAndFindElement(locator: Locator, timeout?: number) : WebElementPromise;

La fonction est similaire à la suivante:

const element = await $browser.wait(until.elementLocated(locator), timeout);
await $browser.wait(until.elementIsVisible(element), timeout);
return await $browser.findElement(locator);

Paramètres

Paramètres Type Description
RETURN WebElementPromise Un élément WebElement qui peut être utilisé pour émettre des commandes sur l'élément localisé. Si l'élément est introuvable, il est invalidé et toutes les commandes planifiées sont arrêtées.
locator by.By | function Localisateur à utiliser.
timeout number Facultatif: durée d'attente, en millisecondes.

Exemples

$browser.waitForAndFindElement($driver.By.id("username"), 10000);

waitForPendingRequests

Cette fonction est destinée à la compatibilité avec les versions antérieures.

Utilisation

$browser.waitForPendingRequests(timeout?: number): Promise<void>;

La fonction est similaire à

let script = "return document.readyState === 'complete'";
await $browser.wait(() => {
    return $browser.executeScript(script);
}, timeout);

Paramètres

Paramètres Type Description
RETURN Promise<void> Promesse qui sera résolue lorsque le chargement du document et de toutes les sous-ressources sera terminé.
timeout number Durée d'attente, en millisecondes.