Riferimento API

È possibile visualizzare informazioni di riferimento per le API di test del browser.

azioni

Questa funzione di test del browser API crea una nuova sequenza di azioni utilizzando l' WebDriver. La sequenza non viene inviata all'esecuzione finché non si chiama la funzione ` Actions.perform ()` nel codice.

Utilizzo

$browser.actions().sendKeys("synthetic").perform();

Parametri

Parametri Immettere Descrizione
RETURN Actions Nuova sequenza di azioni per questa istanza.
options Object Opzioni di configurazione per la sequenza Azioni .

Esempi

Esempio 1: per fare clic, utilizzare il seguente codice:

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

Esempio 2: per passare il mouse su un elemento del browser, utilizzare il seguente codice:

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

Per essere compatibile con la vecchia funzione mouseMove , utilizzare il seguente comando:

$browser.actions().mouseMove(element).perform();
Nota: le API di test dei browser supportano il $browser.actions().mouseMove() metodo per garantire la compatibilità con una versione precedente e implementano il metodo con, $browser.actions().move() poiché il metodo è stato rimosso da Selenium nel 2021 in questa PR.

Esempio 3: per inviare le chiavi, immetti il seguente codice:

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

addHeader

Questo test del browser API modifica l'intestazione delle richieste a HTTP.

Utilizzo

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

Parametri

Parametri Immettere Descrizione
RETURN Promise<void> Il valore restituito è una promessa.
key string HTTP : nome dell'intestazione.
val string Il valore dell'intestazione " HTTP ".

Esempi

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

Questo test del browser API modifica l'intestazione delle richieste a HTTP.

Utilizzo

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

Parametri

Parametri Immettere Descrizione
RETURN Promise<void> Il valore restituito è una promessa.
headers { [key: string]: string } Intestazioni HTTP

Esempi

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

addHostnamesToDenylist

Questo strumento di test dei browser API aggiunge i nomi host alla tua lista di esclusione.

Utilizzo

$browser.addHostnamesToDenylist(hostnameArr: string[]): Promise<void>
Nota: Instana offre la addHostnamesToDenylist funzione per il filtraggio di URL, ma non rimuove la addHostnamesToBlacklist funzione per garantire la compatibilità del codice con le versioni precedenti.
$browser.addHostnamesToBlacklist(hostnameArr: string[]): Promise<void>

Parametri

Parametri Immettere Descrizione
RETURN Promise<void> Il valore restituito è una promessa.
hostnameArr string[] Nome host per la corrispondenza e il supporto dei caratteri jolly

Esempi

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

addHostnamesToAllowlist

Questo strumento di verifica dei browser API aggiunge i nomi host alla tua lista dei siti consentiti.

Utilizzo

$browser.addHostnamesToAllowlist(hostnameArr: string[]): Promise<void>
Nota: Instana fornisce la addHostnamesToAllowlist funzione per il filtraggio di URL, ma non la addHostnamesToWhitelist rimuove per garantire la compatibilità del codice con le versioni precedenti.
$browser.addHostnamesToWhitelist(hostnameArr: string[]): Promise<void>

Parametri

Parametri Immettere Descrizione
RETURN Promise<void> Il valore restituito è una promessa.
hostnameArr string[] Nome host per la corrispondenza e il supporto dei caratteri jolly.

Esempi

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

addHostnameToDenylist

Questo test del browser API aggiunge un nome host alla tua lista di esclusione.

Utilizzo

$browser.addHostnameToDenylist(hostname: string): Promise<void>
Nota: Instana fornisce la addHostnameToDenylist funzione per il filtraggio di URL, ma non la addHostnameToBlacklist rimuove per garantire la compatibilità del codice con le versioni precedenti.
$browser.addHostnameToBlacklist(hostname: string): Promise<void>

Parametri

Parametri Immettere Descrizione
RETURN Promise<void> Il valore restituito è una promessa.
hostname string Il nome host per la corrispondenza e il supporto dei caratteri jolly

Esempi

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

addHostnameToAllowlist

Questo test del browser API aggiunge un nome host alla tua lista dei siti consentiti.

Utilizzo

$browser.addHostnameToAllowlist(hostname: string): Promise<void>
Nota: Instana offre la addHostnameToAllowlist funzione per il filtraggio di URL, ma non rimuove la addHostnameToWhitelist funzione per garantire la compatibilità del codice con le versioni precedenti.
$browser.addHostnameToWhitelist(hostname: string): Promise<void>

Parametri

Parametri Immettere Descrizione
RETURN Promise<void> Il valore restituito è una promessa.
hostname string Il nome host per la corrispondenza e il supporto dei caratteri jolly.

Esempi

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

clearProxy

Questo test del browser API cancella o rimuove la configurazione proxy corrente.

deleteHeader

Questo strumento di test dei browser API elimina le intestazioni definite dall'utente.

Utilizzo

$browser.deleteHeader(key: string): Promise<void>;

Parametri

Parametri Immettere Descrizione
RETURN Promise<void> Una promessa che verrà risolta al completamento di questo comando.
key string HTTP : nome dell'intestazione.

Esempi

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

Questo strumento di test dei browser API elimina le intestazioni definite dall'utente.

Utilizzo

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

Parametri

Parametri Immettere Descrizione
RETURN Promise<void> Una promessa che verrà risolta al completamento di questo comando.
header string[] HTTP Nomi delle intestazioni.

Esempi

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

Questo strumento di verifica del browser API elimina un nome host dalla tua lista di esclusione.

Utilizzo

$browser.deleteHostnameFromDenylist(hostname: string): Promise<void>;
Nota: Instana fornisce la deleteHostnameFromDenylist funzione per il filtraggio di URL, ma non la deleteHostnameFromBlacklist rimuove per garantire la compatibilità del codice con le versioni precedenti.
$browser.deleteHostnameFromBlacklist(hostname: string): Promise<void>;

Parametri

Parametri Immettere Descrizione
RETURN Promise<void> Il valore restituito è una promessa.
hostname string Il nome host per la corrispondenza e il supporto dei caratteri jolly.

deleteHostnameFromAllowlist

Questa API di test del browser elimina un nome host dall'elenco di autorizzazione.

Utilizzo

$browser.deleteHostnameFromAllowlist(hostname: string): Promise<void>;
Nota: il codice aggiunge la deleteHostnameFromAllowlist funzione a API, ma non rimuove la deleteHostnameFromWhitelist funzione per garantire la compatibilità con le versioni precedenti.
$browser.deleteHostnameFromWhitelist(hostname: string): Promise<void>;

Parametri

Parametri Immettere Descrizione
RETURN Promise<void> Il valore restituito è una promessa.
hostname string Il nome host per la corrispondenza e il supporto dei caratteri jolly.

deleteHostnamesFromDenylist

Questo strumento di verifica dei browser API elimina i nomi host dalla tua lista di esclusione.

Utilizzo

$browser.deleteHostnamesFromDenylist(hostnameArr: string[]): Promise<void>
Nota: Instana fornisce la deleteHostnamesFromDenylist funzione per il filtraggio di URL, ma non la deleteHostnamesFromBlacklist rimuove per garantire la compatibilità del codice con le versioni precedenti.
$browser.deleteHostnamesFromBlacklist(hostnameArr: string[]): Promise<void>

Parametri

Parametri Immettere Descrizione
RETURN Promise<void> Il valore restituito è una promessa.
hostnameArr string[] Il nome host per la corrispondenza e il supporto dei caratteri jolly.

deleteHostnamesFromAllowlist

Questo strumento di verifica dei browser API elimina i nomi host dalla tua lista dei siti consentiti.

Utilizzo

$browser.deleteHostnamesFromAllowlist(hostnameArr: string[]): Promise<void>
Nota: Instana fornisce la deleteHostnamesFromAllowlist funzione per il filtraggio di URL, ma non la deleteHostnamesFromWhitelist rimuove per garantire la compatibilità del codice con le versioni precedenti.
$browser.deleteHostnamesFromWhitelist(hostnameArr: string[]): Promise<void>

Parametri

Parametri Immettere Descrizione
RETURN Promise<void> Il valore restituito è una promessa.
hostnameArr string[] Il nome host per la corrispondenza e il supporto dei caratteri jolly.

dollaro-dollaro

Il comando $$ è un collegamento per richiamare il comando findElements per richiamare più elementi sulla pagina. Il comando restituisce un array con i risultati dell'elemento. Questi risultati hanno un prototipo esteso per richiamare i comandi di azione.

È possibile concatenare $ o $$ insieme per navigare nella struttura ad albero DOM.

Per ulteriori informazioni su come selezionare elementi specifici, consultare Selettori CSS.

Parametri

Nome Immettere Descrizione
RETURN Promise<WebElement[]> Il valore restituito è una promessa che verrà risolta con un array WebElements.
selector String, Function Il selettore o la funzione JavaScript per recuperare un determinato elemento.

Esempi

Il file index.html è il seguente:

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

Utilizzare $$ per trovare gli elementi nel modo seguente:

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"
});

dollaro

Il comando $ è un collegamento per richiamare il comando findElement per richiamare un singolo elemento sulla pagina. Il comando restituisce un oggetto. L'oggetto ha un prototipo esteso per richiamare i comandi di azione.

È possibile concatenare $ o $$ insieme per navigare nella struttura ad albero DOM.

Per ulteriori informazioni su come selezionare elementi specifici, consultare Selettori CSS.

Parametri

Nome Immettere Descrizione
RETURN WebElementPromise Il valore restituito è un oggetto di tipo ` WebElementPromise `.
selector String, Function La funzione Selettore o JavaScript per recuperare più elementi.

Esempi

Il file index.html è il seguente:

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

Utilizzare $per trovare l'elemento nel modo seguente:

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"
});

esegui

Questo sito di test dei browser API esegue il codice fornito [Command] utilizzando command.Executor la funzione WebDriver.

Utilizzo

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

Promise<T> è una promessa che verrà risolta con il risultato del comando.

Parametri

Parametro Immettere Descrizione
command Command Comando da pianificare

executeAsyncScript

Questo strumento di test del browser API esegue un frammento di codice asincrono JavaScript nel contesto del frame o della finestra attualmente selezionati. Il frammento di script viene eseguito come corpo di una funzione anonima. Se lo script viene fornito come oggetto funzione, tale funzione viene convertita in una stringa da inserire nella finestra di destinazione.

Se si forniscono argomenti in aggiunta allo script, questi vengono inclusi come argomenti dello script e possono essere utilizzati come riferimento utilizzando l'oggetto arguments . Gli argomenti possono essere un valore booleano, un numero, una stringa o WebElement. Gli array e gli oggetti possono essere utilizzati anche come argomenti di script se ogni elemento aderisce ai tipi indicati.

A differenza dell'esecuzione sincrona di JavaScript con executeScript, gli script eseguiti con questa funzione devono segnalare esplicitamente di aver terminato l'esecuzione avviando la callback fornita. Questo callback viene sempre inserito nella funzione eseguita come ultimo argomento e quindi potrebbe essere indicato con arguments[arguments.length - 1]. Le seguenti operazioni vengono eseguite per risolvere il valore di ritorno di questa funzione rispetto al primo argomento della funzione di callback dello script:

  • Per un elemento HTML, il valore si risolve in WebElement.
  • I valori di ritorno null e non definiti si risolvono in null.
  • Booleani, numeri e stringhe si risolvono così come sono.
  • Le funzioni si risolvono nella loro rappresentazione di stringa.
  • Per array e oggetti, ogni elemento membro viene convertito in base alle regole indicate.

Utilizzo

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

Parametri

Parametri Immettere Descrizione
RETURN Promise.<T> Una promessa che verrà risolta con il valore di ritorno dello script.
script string, Function Lo script da eseguire.
...args * Gli argomenti da passare allo script.

Esempi

Esempio 1: per eseguire una sospensione sincronizzata con la finestra attualmente selezionata, utilizzare i comandi come mostrato nel seguente esempio:

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");
  });

Esempio 2: per sincronizzare un test con una applicazione Ajax, utilizzare i comandi come mostrato nel seguente esempio:

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");

Esempio 3: per inserire XMLHttpRequest e attendere il risultato, utilizza i seguenti comandi. In questo esempio, lo script di inserimento viene specificato con un letterale di funzione. Quando si utilizza questo formato, la funzione viene convertita in una stringa per l'inserimento. Pertanto, la funzione non deve fare riferimento ad alcun simbolo non definito nell'ambito della pagina sottoposta a test.

$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

Questo strumento di test del browser API esegue un frammento di codice tratto da JavaScript nel contesto del frame o della finestra attualmente selezionati. Il frammento di script viene eseguito come corpo di una funzione anonima. Se si fornisce lo script come oggetto funzione, tale funzione viene convertita in una stringa da inserire nella finestra di destinazione.

Se si forniscono argomenti in aggiunta allo script, questi vengono inclusi come argomenti dello script e potrebbero essere utilizzati come riferimento utilizzando l'oggetto arguments . Gli argomenti possono essere un valore booleano, un numero, una stringa o WebElement. Gli array e gli oggetti possono essere utilizzati anche come argomenti di script se ogni elemento aderisce ai tipi indicati.

Lo script potrebbe fare riferimento a tutte le variabili accessibili dalla finestra corrente. Inoltre, lo script viene eseguito nel contesto della finestra, quindi document potrebbe essere utilizzato per fare riferimento al documento corrente. Non sono disponibili variabili locali una volta terminata l'esecuzione dello script, anche se le variabili globali persistono.

Se lo script ha un valore di ritorno, vale a dire, se lo script contiene un'istruzione di ritorno, vengono eseguite le seguenti operazioni per risolvere il valore di ritorno di questa funzione:

  • Per un elemento HTML, il valore si risolve in WebElement.
  • I valori di ritorno null e non definiti si risolvono in null.
  • Booleani, numeri e stringhe si risolvono così come sono.
  • Le funzioni si risolvono nella loro rappresentazione di stringa.
  • Per array e oggetti, ogni elemento membro viene convertito in base alle regole indicate.

Utilizzo

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

Parametri

Parametri Immettere Descrizione
RETURN Promise.<T> Una promessa che verrà risolta con il valore di ritorno dello script.
script string, Function Lo script da eseguire.
...args * Gli argomenti da passare allo script.

findElement

Questo strumento di test del browser API individua un elemento nella pagina. Se non è possibile trovare l'elemento, il driver restituisce error.NoSuchElementError.

Utilizzo

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

Parametri

Parametri Immettere Descrizione
RETURN WebElementPromise Un WebElement che può essere utilizzato per immettere comandi rispetto all'elemento individuato. Se l'elemento non viene trovato, l'elemento viene invalidato e tutti i comandi pianificati vengono arrestati.
locator By , function Il localizzatore da utilizzare.

Esempi

Non utilizzare questa funzione per verificare se un elemento è presente nella pagina. Devi invece usare findElements :

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

È possibile definire i criteri di ricerca per un elemento utilizzando uno dei factory nello spazio dei nomi webdriver.By o come oggetto webdriver.By.Hash di breve durata. Ad esempio, le seguenti due istruzioni sono equivalenti:

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

È inoltre possibile fornire una funzione di localizzazione personalizzata, che accetta come parametro questa istanza e restituisce un oggetto `WebElement` oppure una promessa che verrà risolta con un oggetto ` WebElement `. Se la promessa restituita viene risolta con un array di WebElements,, WebDriver utilizza il primo elemento. Ad esempio, per trovare il primo collegamento visibile in una pagina, è possibile utilizzare i seguenti comandi:

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

Questo test del browser API ricerca diversi elementi nella pagina. Per informazioni sulle strategie di localizzazione degli elementi, consultare findElement .

Utilizzo

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

Parametri

Parametri Immettere Descrizione
RETURN Promessa <WebElement[ ]> Una promessa che verrà risolta con un array WebElements.
locator By, function Il localizzatore da utilizzare.

generateTOTPToken

Questo strumento di verifica del browser API genera un token con password monouso basata sul tempo (TOTP) a partire da una chiave TOTP. Puoi utilizzare questo link API per effettuare l'accesso tramite l'autenticazione a due fattori.

Utilizzo

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

Parametri

Parametro Immettere Descrizione
RETURN string Un token TOTP (one - time password) basato sul tempo
key string Una chiave TOTP, stringhe base32
options Object,undefined Facoltativo: impostazioni facoltative, ad esempio {digits: 8, algorithm: "SHA-512", period: 60}. Le impostazioni predefinite sono {digits: 6, algorithm: "SHA-1", period: 30}

Esempi

Esempio 1: per generare un token TOTP e accedere con l'autenticazione a due fattori nel test dello script del browser:

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);
  });
});

Esempio 2: per generare un token TOTP nel test 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"
}

ottenere

Questo link per il test dei browser API rimanda a URL.

Parametri

Parametri Immettere Descrizione
RETURN Promise<void> Una promessa che verrà risolta al termine del caricamento del documento.
url string L'indirizzo completo URL per accedere al sito.

getAllWindowHandles

Questo test del browser API esegue un comando per recuperare l'elenco corrente degli handle delle finestre disponibili.

Utilizzo

$browser.getAllWindowHandles(): Promise<string[]>;

Parametri

Parametro Immettere Descrizione
RETURN Promise<string[]> Una promessa che verrà risolta con un array di handle di finestra.

getCapabilities

Questo test del browser API rileva le funzionalità di questa istanza.

Utilizzo

$browser.getCapabilities(): Promise<Capabilities>;

Parametri

Parametro Immettere Descrizione
RETURN Promise<Capabilities> Una promessa che verrà risolta con le capacità di questa istanza.

getCurrentUrl

Questo test del browser API esegue un comando per recuperare l' URL della pagina corrente.

Parametri

Parametro Immettere Descrizione
RETURN Promise<string> Una promessa che verrà mantenuta con l'attuale URL.

getHeaders

Questo sito web dedicato ai test dei browser API raccoglie le intestazioni personalizzate dagli utenti.

Parametri

Parametro Immettere Descrizione
RETURN Map<string, any> Intestazioni definite dall'utente

Esempi

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

Questo strumento di test del browser API recupera il codice sorgente della pagina corrente. L'origine restituita è una rappresentazione del DOM sottostante. Non si prevede che l'origine venga formattata o che venga eseguito l'escape nello stesso modo della risposta non elaborata inviata dal server Web.

Parametri

Parametro Immettere Descrizione
RETURN Promise<string> Una promessa che verrà risolta con l'origine pagina corrente.

getProxy

Questo strumento di verifica del browser API recupera la configurazione proxy corrente.

Utilizzo

$browser.getProxy(): FFProxyConfig | CProxyConfig;

Questo metodo ` API ` può essere richiamato anche tramite $network l'oggetto:

$network.getProxy(): FFProxyConfig | CProxyConfig;

Configurazione 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

Questo test del browser API recupera la sessione di questo utente.

Parametri

Parametro Immettere Descrizione
RETURN Promise<Session> Una promessa per la sessione di questo cliente.

getTitle

Questo test del browser API esegue un comando per recuperare il titolo della pagina corrente.

Parametri

Parametro Immettere Descrizione
RETURN Promise<string> Una promessa che verrà risolta con il titolo della pagina corrente.

getWindowHandle

Questo test del browser API esegue un comando per recuperare l'handle della finestra corrente.

Parametri

Parametro Immettere Descrizione
RETURN Promise<string> Una promessa che verrà risolta con l'handle della finestra corrente.

gestisci

Questo test del browser API recupera l'interfaccia delle opzioni per questa istanza.

Parametri

Parametro Immettere Descrizione
RETURN Options L'interfaccia delle opzioni per questa istanza.

Opzioni

Le opzioni forniscono metodi per la gestione dello stato del driver e del browser.

Immettere Descrizione
addCookie(spec: IWebDriverOptionsCookie): Promise<void> Pianifica un comando per aggiungere cookie.
deleteAllCookies(): Promise<void>; Pianifica un comando per eliminare tutti i cookie visibili alla pagina corrente.
deleteCookie(name: string): Promise<void>; Pianifica un comando per eliminare il cookie con il nome fornito. Se nessun cookie con il nome fornito è visibile alla pagina corrente, questo comando è un no - op.
getCookies(): Promise<IWebDriverCookie[]>; Pianifica un comando per richiamare tutti i cookie visibili alla pagina corrente. Ogni cookie viene restituito come oggetto ` JSON `, come descritto dal protocollo di comunicazione WebDriver.
getCookie(name: string): Promise<IWebDriverCookie>; Pianifica un comando per richiamare cookie con il nome fornito. Restituisce null se non è disponibile alcun cookie di questo tipo. Il cookie viene restituito come oggetto ` JSON `, come descritto dal protocollo di comunicazione WebDriver.
logs(): Logs; Fornisce l'interfaccia per la gestione dei log del driver.
getTimeouts(): Promise<ITimeouts>; Richiama i timeoutcorrenti.
setTimeouts(timeouts: ITimeouts): Promise<void>; Imposta i timeoutcorrenti.
window(): Window; Fornisce l'interfaccia per gestire la finestracorrente.

IWebDriverCookie

Parametri Immettere Descrizione
name string Il nome del cookie.
value string Il valore cookie.
path string Il percorso cookie. Il valore predefinito è "/" quando viene aggiunto un cookie.
domain string Il dominio a cui è visibile il cookie. Quando viene aggiunto un cookie, il valore predefinito è l' URL del documento del contesto di navigazione corrente.
secure boolean Il parametro indica se il cookie è un cookie sicuro. Il valore predefinito è false, che significa che il cookie non è un cookie sicuro.
httpOnly boolean Il parametro indica se il cookie è un cookie di sola lettura ( HTTP ). Il valore predefinito è false, il che significa che il cookie non è un cookie esclusivo dell' HTTP.
expiry number La scadenza viene sempre restituita in secondi dall'epoca in cui si richiamano i cookie dal browser.

Timeout

Parametro Immettere Descrizione
script number Specifica il tempo massimo di attesa per l'esecuzione di uno script valutato.
pageLoad number Specifica il tempo massimo di attesa per il completamento del caricamento di una pagina. Il valore predefinito è 300000 millisecondi.
implicit number Specifica la quantità massima di tempo di attesa per il successo di un localizzatore di elementi quando si individuano elementi sulla pagina. Il valore predefinito è 0 millisecondi.

Finestra

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

Un'interfaccia per la gestione della finestra corrente.

Immettere Descrizione
getPosition(): Promise<ILocation>; Richiama la posizione corrente della finestra, relativa alla parte superiore sinistra dello schermo.
setPosition(x: number, y: number): Promise<void>; Riposiziona la finestra corrente.
getSize(): Promise<ISize>; Richiama la dimensione corrente della finestra.
setSize(width: number, height: number): Promise<void>; Ridimensiona la finestra corrente.
getRect(): Promise<IRectangle>; Restituisce la dimensione e la posizione della finestra di livello superiore corrente.
setRect({x, y, width, height}: Partial<IRectangle>): Promise<IRectangle>; Imposta la dimensione e la posizione della finestra di livello superiore corrente. È possibile aggiornare solo la dimensione omettendo x e y oppure solo la posizione omettendo le opzioni width e height .
maximize(): Promise<void>; Ingrandisce la finestra corrente.

Esempi

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

Questo test del browser API modifica le impostazioni di autenticazione per le future richieste HTTP.

Utilizzo

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

Parametri

Parametri Immettere Descrizione
RETURN Promise<void> Una promessa viene risolta quando vengono applicate le impostazioni.
authName string Nome utente per l'autenticazione.
authPass string Password utente per l'autenticazione.

Esempi

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

setProxy

Questo test del browser API configura un server proxy da utilizzare per tutte le richieste HTTP, HTTPS e FTP.

Utilizzo

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

Questo metodo ` API ` può essere richiamato anche tramite $network l'oggetto.

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

Parametri

Parametri Immettere Descrizione
RETURN Promise<void> Una promessa viene risolta quando vengono applicate le impostazioni.
proxyURL string, URL Una stringa « URL » per connettersi al server proxy. La stringa " URL " deve avere il formato definito nel metodo " url.parse " ( urlString ) del nodo. Ad esempio, http://proxy_host:8888 o https://user:pass@proxy_host:8888
noProxy string Facoltativo: un elenco separato da virgole di host che ignora tutti i proxy.

setProxyAdvanced

Questo strumento di test del browser API imposta la configurazione del proxy utilizzando il formato supportato da Chrome o dall'estensione Firefox API per l'utilizzo del proxy.

Utilizzo

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

Questo metodo ` API ` può essere richiamato anche tramite $network l'oggetto.

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

Parametri

Parametro Immettere Descrizione
RETURN Promise<void> Una promessa viene risolta quando vengono applicate le impostazioni.
proxyConfig CProxyConfig oppure FFProxyConfig Un oggetto di configurazione proxy in incapsulamento specifico di Chrome o Firefox .
authName string Facoltativo: un nome utente del server proxy per l'autenticazione.
authPass string Facoltativo: una password utente del server proxy per l'autenticazione.

Esempi

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

Questo test del browser API modifica le impostazioni di autenticazione del proxy per le future richieste HTTP, HTTPS e FTP.

Utilizzo

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

Parametri

Parametri Immettere Descrizione
RETURN Promise<void> Una promessa viene risolta quando vengono applicate le impostazioni.
authName string Un nome utente del server proxy per l'autenticazione.
authPass string Una password utente del server proxy per l'autenticazione.

Esempi

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

Questo test del browser API configura un server proxy da utilizzare per tutte le richieste HTTP.

Utilizzo

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

Questo metodo ` API ` può essere richiamato anche tramite $network l'oggetto.

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

Parametri

Parametro Immettere Descrizione
RETURN Promise<void> Una promessa viene risolta quando vengono applicate le impostazioni.
proxyURL string, URL Una stringa « URL » per connettersi al server proxy. La stringa ` URL ` deve avere il formato definito nel metodo ` url.parse ` ( urlString ) di Node. Ad esempio, http://proxy_host:8888 o https://user:pass@proxy_host:8888
noProxy string Facoltativo: un elenco separato da virgole di host che devono ignorare tutti i proxy.

Esempi

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

Questo test del browser API configura un server proxy da utilizzare per tutte le richieste HTTPS.

Utilizzo

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

Questo metodo ` API ` può essere richiamato anche tramite $network l'oggetto.

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

Parametri

Parametro Immettere Descrizione
RETURN Promise<void> Una promessa viene risolta quando vengono applicate le impostazioni
proxyURL string, URL Una stringa « URL » per connettersi al server proxy. La stringa " URL " deve avere il formato definito nel metodo " url.parse " ( urlString ) del nodo. Ad esempio, http://proxy_host:8888 o https://user:pass@proxy_host:8888
noProxy string Facoltativo: un elenco separato da virgole di host che devono ignorare tutti i proxy.

Esempi

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

Questo test del browser API configura un server proxy tramite uno script PAC (Proxy Auto-Config).

Utilizzo

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

Parametri

Parametro Immettere Descrizione
RETURN Promise<void> Una promessa viene risolta quando vengono applicate le impostazioni.
pacScriptURL string L' URL e dello script PAC.
noProxy string Facoltativo: un elenco separato da virgole di host che devono ignorare tutti i proxy.
authMap Map Facoltativo: una mappa delle credenziali di autenticazione da fornire ai server proxy, che sono immesse dal Hostname dei server proxy. I valori di questa mappa devono essere definiti nel formato {username: "authUsername", password: "authPassword"}.

Esempi

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());
}

sospensione

Questo test del browser API imposta un comando che mette il driver in stato di sospensione per un determinato periodo di tempo.

Parametri

Parametri Immettere Descrizione
RETURN Promise<void> Una promessa che si risolverà al termine del sonno.
ms number La quantità di tempo, in millisecondi, per la sospensione.

Esempi

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

switchTo

Questo test del browser API dispone di un'interfaccia che consente di spostare il focus del driver su un altro frame o su un'altra finestra.

TargetLocator

Un'interfaccia per modificare il focus del driver in un altro frame o finestra.

Metodi istanza

Immettere Descrizione
activeElement(): WebElementPromise; Pianifica un comando per richiamare l'elemento document.activeElement sul documento corrente o document.body se activeElement non è disponibile.
defaultContent(): Promise<void>; Pianifica un comando per spostare lo stato attivo di tutti i comandi futuri sul primo frame della pagina. Il frame di destinazione può essere specificato con uno dei seguenti valori: - Un numero che indica un indice (a partire da zero) all'interno di un window.frames - Un riferimento WebElement, che corrisponde a un frame elemento DOM iframe o - Il null valore per selezionare il frame più in alto nella pagina. Il passaggio null equivale a chiamare ` defaultContent `.
frame(id: Number |WebElement| null): Promise<void>; Modifica lo stato attivo di tutti i comandi futuri in un altro frame della pagina.
parentFrame(): Promise<void>; Modifica lo stato attivo di tutti i comandi futuri nel frame principale del frame attualmente selezionato. Questo comando non ha effetto se il programma di controllo è già focalizzato sul contesto di esplorazione di livello superiore.
window(nameOrHandle: string): Promise<void>; Pianifica un comando per spostare lo stato attivo di tutti i comandi futuri in un'altra finestra. Windows possono essere specificati tramite il loro window.name attributo o tramite il loro handle (come restituito da ` getWindowHandle `).
newWindow(typeHint: string): Promise<void>; Crea una finestra del browser e sposta il focus per i comandi successivi di questo driver sulla nuova finestra. typeHint "finestra" o "scheda". Non è garantito che la finestra creata sia del tipo richiesto. Se il driver non supporta il tipo richiesto, viene aperta una nuova finestra del browser del tipo supportato dal driver. La promessa restituita viene risolta quando il driver sposta il focus sulla nuova finestra.
alert(): AlertPromise; Pianifica un comando per passare alla finestra di dialogo modale attiva, come quelle aperte da window.alert(), window.confirm()e window.prompt(). La promessa restituita viene rifiutata con un error.NoSuchAlertError se non sono disponibili avvisi aperti.

Esempi

/**
 * 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

Questo test del browser API imposta un comando per acquisire uno screenshot. Il driver tenta di restituire uno screenshot dei seguenti elementi, in ordine di preferenza:

  1. Pagina intera
  2. Finestra corrente
  3. Parte visibile del frame corrente
  4. Intero display che contiene il browser

Parametri

Parametro Immettere Descrizione
RETURN Promise<string> Una promessa che verrà risolta con lo screenshot come PNG con codifica base-64 .

attesa

Questo test del browser API attende che una condizione restituisca un valore "vero". La condizione può essere specificata da una condizione, come una funzione personalizzata o come qualsiasi promessa - come thenable.

Per una condizione o una funzione, l'attesa valuta ripetutamente la condizione finché non restituisce un valore vero. Se si verificano errori mentre l' API e valuta la condizione, tali errori vengono propagati. Quando una condizione restituisce una promessa, il loop di polling attende che venga risolta e utilizza il valore risolto per verificare se la condizione è soddisfatta. Il tempo di risoluzione per una promessa viene sempre preso in considerazione per verificare se un'attesa è scaduta.

Se la condizione specificata è un « WebElementCondition, », l'operazione di attesa restituisce un « WebElementPromise » che rimanda all'elemento che soddisfa la condizione.

Utilizzo

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

Parametri

Parametro Immettere Descrizione
RETURN Promise<string> Una promessa che verrà risolta con il primo valore vero che viene restituito dalla funzione di condizione o rifiutato se la condizione scade. Se l'oggetto di input è un'istanza di un ` WebElementCondition, `, il valore restituito è un ` WebElementPromise `.
condition IThenable<(T|null)> o Condition<(T|null)> o function(WebDriver): (T|null) La condizione su cui attendere, definita come una promessa, un oggetto condizione o una funzione da valutare come una condizione.
opt_timeout number La durata, in millisecondi, dell'attesa che la condizione sia true.
opt_message string oppure function Un messaggio facoltativo da utilizzare in caso di timeout dell'attesa.

Esempi

Esempio 1: per attendere fino a 10 secondi che un elemento sia presente nella pagina, utilizzare i comandi come mostrato nel seguente esempio:

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

Esempio 2: per attendere un elemento e fare clic, utilizzare i comandi come mostrato nel seguente esempio:

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

Questo test del browser API individua un elemento nella pagina e attende che diventi visibile. Se non viene trovato, il monitoraggio sintetico restituisce un errore. Il valore di timeout è facoltativo. Viene applicato separatamente ad entrambe le attività di ricerca dell'elemento e in attesa della sua visibilità. Pertanto, nel peggiore dei casi, questo metodo può impiegare fino al doppio del valore di timeout fornito. Il valore di timeout predefinito è 1000 ms (1 secondo).

Un WebElementPromise viene restituito se viene trovato un elemento con il localizzatore fornito nei parametri e l'elemento diventa visibile o quando le condizioni indicate non sono soddisfatte all'interno del timeoutspecificato.

Utilizzo

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

La funzione è simile alla seguente:

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

Parametri

Parametri Immettere Descrizione
RETURN WebElementPromise Un WebElement che può essere utilizzato per immettere comandi rispetto all'elemento individuato. Se l'elemento non viene trovato, l'elemento viene invalidato e tutti i comandi pianificati vengono arrestati.
locator by.By | function Il localizzatore da utilizzare.
timeout number Facoltativo: la quantità di tempo, in millisecondi, da attendere.

Esempi

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

waitForPendingRequests

Questa funzione è per la compatibilità con le versioni precedenti.

Utilizzo

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

La funzione è simile a

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

Parametri

Parametri Immettere Descrizione
RETURN Promise<void> Una promessa che verrà risolta al termine del caricamento del documento e di tutte le risorse secondarie.
timeout number La quantità di tempo, in millisecondi, da attendere.