Skorowidz funkcji API produktu

Istnieje możliwość wyświetlenia informacji referencyjnych dla interfejsów API testowania przeglądarki.

Działania

Ta funkcja API testowania interfejsu API tworzy nową sekwencję działań przy użyciu WebDriver. Sekwencja nie jest wprowadzana do wykonania do czasu wywołania funkcji Actions.perform() w kodzie użytkownika.

Wykorzystanie

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

Parametry

Parametry Typ Opis
RETURN Actions Nowa sekwencja działań dla tej instancji.
options Object Opcje konfiguracyjne dla sekwencji czynności (patrz Działania).

Przykłady

Przykład 1: Aby kliknąć ten kod, należy użyć następującego kodu:

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

Przykład 2: Aby umieścić kursor myszy nad elementem przeglądarki, należy użyć następującego kodu:

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

Aby być kompatybilnym ze starą funkcją mouseMove , należy użyć następującej komendy:

$browser.actions().mouseMove(element).perform();

Uwaga: Interfejsy API do testowania przeglądarki obsługują metodę $browser.actions().mouseMove() w celu zapewnienia zgodności z wcześniejszą wersją i zaimplementować metodę z produktem $browser.actions().move() , ponieważ metoda została usunięta przez produkt Selenium w 2021 w tym zapotrzebowaniu.

Przykład 3: Aby wysłać klucze, należy uruchomić następujący kod:

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

addHeader

Ta przeglądarka testująca interfejs API modyfikuje nagłówek dla żądań HTTP.

Wykorzystanie

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

Parametry

Parametry Typ Opis
RETURN Promise<void> Zwracana wartość jest obietnicą.
key string Nazwa nagłówka HTTP.
val string Wartość nagłówka HTTP.

Przykłady

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

Ta przeglądarka testująca interfejs API modyfikuje nagłówek dla żądań HTTP.

Wykorzystanie

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

Parametry

Parametry Typ Opis
RETURN Promise<void> Zwracana wartość jest obietnicą.
headers { [key: string]: string } Nagłówki HTTP

Przykłady

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

addHostnamesToDenylist

Ten interfejs API testowania przeglądarki dodaje nazwy hostów do listy odmowy.

Wykorzystanie

$browser.addHostnamesToDenylist(hostnameArr: string[]): Promise<void>

Uwaga: Instana udostępnia funkcję addHostnamesToDenylist do filtrowania adresów URL, ale nie usuwa funkcji addHostnamesToBlacklist , aby upewnić się, że kod jest kompatybilny z wcześniejszymi wersjami.

$browser.addHostnamesToBlacklist(hostnameArr: string[]): Promise<void>

Parametry

Parametry Typ Opis
RETURN Promise<void> Zwracana wartość jest obietnicą.
hostnameArr string[] Nazwa hosta w celu dopasowania i obsługi znaków wieloznacznych

Przykłady

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

addHostnamesToAllowlist

Ten interfejs API testowania przeglądarki dodaje nazwy hostów do listy zezwalających.

Wykorzystanie

$browser.addHostnamesToAllowlist(hostnameArr: string[]): Promise<void>

Uwaga: Instana udostępnia funkcję addHostnamesToAllowlist do filtrowania adresów URL, ale nie usuwa funkcji addHostnamesToWhitelist , aby zapewnić, że kod jest kompatybilny z wcześniejszymi wersjami.

$browser.addHostnamesToWhitelist(hostnameArr: string[]): Promise<void>

Parametry

Parametry Typ Opis
RETURN Promise<void> Zwracana wartość jest obietnicą.
hostnameArr string[] Nazwa hosta w celu dopasowania i obsługi znaków wieloznacznych.

Przykłady

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

addHostnameToDenylist

Ten interfejs API testowania przeglądarki dodaje nazwę hosta do listy odmowy.

Wykorzystanie

$browser.addHostnameToDenylist(hostname: string): Promise<void>

Uwaga: Instana udostępnia funkcję addHostnameToDenylist do filtrowania adresów URL, ale nie usuwa funkcji addHostnameToBlacklist , aby zapewnić, że kod jest kompatybilny z wcześniejszymi wersjami.

$browser.addHostnameToBlacklist(hostname: string): Promise<void>

Parametry

Parametry Typ Opis
RETURN Promise<void> Zwracana wartość jest obietnicą.
hostname string Nazwa hosta w celu dopasowania i obsługi znaków wieloznacznych

Przykłady

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

addHostnameToAllowlist

Ten interfejs API testowania przeglądarki dodaje nazwę hosta do listy zezwalających.

Wykorzystanie

$browser.addHostnameToAllowlist(hostname: string): Promise<void>

Uwaga: Instana udostępnia funkcję addHostnameToAllowlist do filtrowania adresów URL, ale nie usuwa funkcji addHostnameToWhitelist , aby upewnić się, że kod jest kompatybilny z wcześniejszymi wersjami.

$browser.addHostnameToWhitelist(hostname: string): Promise<void>

Parametry

Parametry Typ Opis
RETURN Promise<void> Zwracana wartość jest obietnicą.
hostname string Nazwa hosta w celu dopasowania i obsługi znaków wieloznacznych.

Przykłady

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

clearProxy

Ta przeglądarka testuje narzędzia API lub usuwa bieżącą konfigurację serwera proxy.

Wykorzystanie

$browser.clearProxy(): Promise<void>;

deleteHeader

Ta przeglądarka testowania interfejsu API usuwa nagłówek zdefiniowany przez użytkownika.

Wykorzystanie

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

Parametry

Parametry Typ Opis
RETURN Promise<void> Obietnica, która zostanie rozstrzygnięta po zakończeniu wykonywania tej komendy.
key string Nazwa nagłówka HTTP.

Przykłady

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

Ta przeglądarka testowania interfejsu API usuwa nagłówki zdefiniowane przez użytkownika.

Wykorzystanie

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

Parametry

Parametry Typ Opis
RETURN Promise<void> Obietnica, która zostanie rozstrzygnięta po zakończeniu wykonywania tej komendy.
header string[] Nazwy nagłówków HTTP.

Przykłady

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

Ten interfejs API testowania przeglądarki usuwa nazwę hosta z listy odmowy.

Wykorzystanie

$browser.deleteHostnameFromDenylist(hostname: string): Promise<void>;

Uwaga: Instana udostępnia funkcję deleteHostnameFromDenylist do filtrowania adresów URL, ale nie usuwa funkcji deleteHostnameFromBlacklist , aby zapewnić, że kod jest kompatybilny z wcześniejszymi wersjami.

$browser.deleteHostnameFromBlacklist(hostname: string): Promise<void>;

Parametry

Parametry Typ Opis
RETURN Promise<void> Zwracana wartość jest obietnicą.
hostname string Nazwa hosta w celu dopasowania i obsługi znaków wieloznacznych.

deleteHostnameFromAllowlist

Ta przeglądarka testuje interfejsy API, które usuwają nazwę hosta z listy.

Wykorzystanie

$browser.deleteHostnameFromAllowlist(hostname: string): Promise<void>;

Uwaga: Kod dodaje funkcję deleteHostnameFromAllowlist do interfejsu API, ale nie usuwa funkcji deleteHostnameFromWhitelist , aby zapewnić, że kod jest kompatybilny z wcześniejszymi wersjami.

$browser.deleteHostnameFromWhitelist(hostname: string): Promise<void>;

Parametry

Parametry Typ Opis
RETURN Promise<void> Zwracana wartość jest obietnicą.
hostname string Nazwa hosta w celu dopasowania i obsługi znaków wieloznacznych.

deleteHostnamesFromDenylist

Ta przeglądarka testowania interfejsu API usuwa nazwy hostów z listy odmowy.

Wykorzystanie

$browser.deleteHostnamesFromDenylist(hostnameArr: string[]): Promise<void>

Uwaga: Instana udostępnia funkcję deleteHostnamesFromDenylist do filtrowania adresów URL, ale nie usuwa funkcji deleteHostnamesFromBlacklist , aby zapewnić, że kod jest kompatybilny z wcześniejszymi wersjami.

$browser.deleteHostnamesFromBlacklist(hostnameArr: string[]): Promise<void>

Parametry

Parametry Typ Opis
RETURN Promise<void> Zwracana wartość jest obietnicą.
hostnameArr string[] Nazwa hosta w celu dopasowania i obsługi znaków wieloznacznych.

deleteHostnamesFromAllowlist

Ten interfejs API testowania przeglądarki usuwa nazwy hostów z listy zezwalających.

Wykorzystanie

$browser.deleteHostnamesFromAllowlist(hostnameArr: string[]): Promise<void>

Uwaga: Instana udostępnia funkcję deleteHostnamesFromAllowlist do filtrowania adresów URL, ale nie usuwa funkcji deleteHostnamesFromWhitelist , aby zapewnić, że kod jest kompatybilny z wcześniejszymi wersjami.

$browser.deleteHostnamesFromWhitelist(hostnameArr: string[]): Promise<void>

Parametry

Parametry Typ Opis
RETURN Promise<void> Zwracana wartość jest obietnicą.
hostnameArr string[] Nazwa hosta w celu dopasowania i obsługi znaków wieloznacznych.

dolar-dolar

Komenda $$ jest skrótem do wywołania komendy findElements w celu pobrania wielu elementów na stronie. Komenda zwraca tablicę z wynikami elementu. Te wyniki mają rozszerzony prototyp, aby wywołać komendy działań.

Łańcuch $ lub $$ można połączyć razem, aby poruszać się po drzewie DOM.

Więcej informacji na temat sposobu wybierania konkretnych elementów zawiera sekcja Selektory CSS.

Wykorzystanie

$browser.$$(selector);

Parametry

Nazwa Typ Opis
RETURN Promise<WebElement[]> Zwracana wartość to obietnica, która zostanie rozstrzygnięta przy użyciu tablicy WebElements.
selector String, Function Selektor lub funkcja JavaScript w celu pobrania określonego elementu.

Przykłady

Plik index.html jest następujący:

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

Użyj opcji $$ , aby znaleźć elementy w następujący sposób:

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

dolar

Komenda $ jest skrótem do wywołania komendy findElement w celu pobrania pojedynczego elementu na stronie. Komenda zwraca obiekt. Obiekt ten ma rozszerzony prototyp, aby wywołać komendy działania.

Łańcuch $ lub $$ można połączyć razem, aby poruszać się po drzewie DOM.

Więcej informacji na temat sposobu wybierania konkretnych elementów zawiera sekcja Selektory CSS.

Wykorzystanie

$browser.$(selector): WebElementPromise;

Parametry

Nazwa Typ Opis
RETURN WebElementPromise Zwrócona wartość to Promise WebElement.
selector String, Function Selektor lub funkcja JavaScript do pobierania wielu elementów.

Przykłady

Plik index.html jest następujący:

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

Użyj $, aby znaleźć element w następujący sposób:

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

-wykonywanie

Ten interfejs API testowania przeglądarki uruchamia udostępniony Command za pomocą command.Executor sterownika WebDriver.

Wykorzystanie

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

Promise<T> to obietnica, która zostanie rozstrzygnięta przy użyciu wyniku komendy.

Parametry

Parametr Typ Opis
command Command Komenda do zaplanowania

Skrypt executeAsync

Ten interfejs API testowania przeglądarki uruchamia fragment kodu asynchronicznego JavaScript w kontekście aktualnie wybranej ramki lub okna. Fragment skryptu jest uruchamiany jako treść funkcji anonimowej. Jeśli skrypt jest udostępniany jako obiekt funkcji, ta funkcja jest przekształcana w łańcuch w celu wykonania wstrzyknięcia w oknie docelowym.

Jeśli oprócz skryptu zostaną podane jakiekolwiek argumenty, jest on dołączany jako argumenty skryptu i może być przywoływany za pomocą obiektu arguments . Argumenty mogą być typu Boolean, number, string lub WebElement. Tablice i obiekty mogą być również używane jako argumenty skryptu, jeśli każdy element jest zgodny z określonymi typami.

W przeciwieństwie do uruchamiania synchronicznego języka JavaScript za pomocą skryptu executeScript, skrypty uruchamiane z tą funkcją muszą jawnie sygnalizować, że zostały zakończone przez uruchomienie podanego wywołania zwrotnego. To wywołanie zwrotne jest zawsze wstrzykiwane do wykonanej funkcji jako ostatni argument, a więc może być przywoływane za pomocą arguments[arguments.length - 1]. W celu rozstrzygnięcia wartości zwracanej przez tę funkcję względem pierwszego argumentu funkcji zwrotnej skryptu podejmowane są następujące kroki:

  • W przypadku elementu HTML wartość jest tłumaczona na WebElement.
  • Wartość NULL i niezdefiniowane wartości zwracane są rozstrzygane na wartość NULL.
  • Wartości Booleans, liczby i łańcuchy są rozstrzygane w taki sposób, jak jest.
  • Funkcje są tłumaczane na ich reprezentację łańcuchową.
  • W przypadku tablic i obiektów każda pozycja elementu jest przekształcana zgodnie z określonymi regułami.

Wykorzystanie

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

Parametry

Parametry Typ Opis
RETURN Promise.<T> Obietnica, która zostanie rozstrzygnięta przy użyciu wartości zwracanej przez skrypt.
script string, Function Skrypt do uruchomienia.
...args * Argumenty, które mają zostać przekazane do skryptu.

Przykłady

Przykład 1: Aby wykonać sen zsynchronizowany z aktualnie wybranym oknem, należy użyć komend w sposób przedstawiony w poniższym przykładzie:

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

Przykład 2: Aby zsynchronizować test z aplikacją Ajax, należy użyć komend w sposób przedstawiony w poniższym przykładzie:

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

Przykład 3: Aby wykonać wstrzyknięcie XMLHttpRequest i poczekać na wynik, należy użyć następujących komend. W tym przykładzie skrypt wstrzykiwania jest określony z literałem funkcji. Jeśli używany jest ten format, funkcja jest przekształcana w łańcuch do wstrzykiwań. W związku z tym funkcja nie może odwoływać się do żadnych symboli, które nie są zdefiniowane w zasięgu testowanej strony.

$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

Ten interfejs API testowania przeglądarki uruchamia fragment kodu języka JavaScript w kontekście aktualnie wybranej ramki lub okna. Fragment skryptu jest uruchamiany jako treść funkcji anonimowej. Jeśli skrypt zostanie podany jako obiekt funkcji, ta funkcja zostanie przekształcona w łańcuch w celu wykonania wstrzyknięcia w oknie docelowym.

Jeśli oprócz skryptu zostaną podane jakiekolwiek argumenty, jest ona dołączana jako argumenty skryptu i może być przywoływana przy użyciu obiektu arguments . Argumenty mogą być typu Boolean, number, string lub WebElement. Tablice i obiekty mogą być również używane jako argumenty skryptu, jeśli każdy element jest zgodny z określonymi typami.

Skrypt może odwoływać się do wszystkich zmiennych dostępnych w bieżącym oknie. Co więcej, skrypt działa w kontekście okna, dlatego document może być używany do odwołania się do bieżącego dokumentu. Po zakończeniu działania skryptu nie są dostępne żadne zmienne lokalne, mimo że zmienne globalne są trwałe.

Jeśli skrypt ma wartość zwracanej wartości, to znaczy, że jeśli skrypt zawiera instrukcję return, to w celu rozstrzygnięcia wartości zwracanej funkcji podejmowane są następujące kroki:

  • W przypadku elementu HTML ta wartość jest tłumaczona na element WebElement.
  • Wartość NULL i niezdefiniowane wartości zwracane są rozstrzygane na wartość NULL.
  • Wartości Booleans, liczby i łańcuchy są rozstrzygane w taki sposób, jak jest.
  • Funkcje są tłumaczane na ich reprezentację łańcuchową.
  • W przypadku tablic i obiektów każda pozycja elementu jest przekształcana zgodnie z określonymi regułami.

Wykorzystanie

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

Parametry

Parametry Typ Opis
RETURN Promise.<T> Obietnica, która zostanie rozstrzygnięta przy użyciu wartości zwracanej przez skrypt.
script string, Function Skrypt do uruchomienia.
...args * Argumenty, które mają zostać przekazane do skryptu.

findElement

Ten interfejs API testowania przeglądarki lokalizuje element na stronie. Jeśli element nie może zostać znaleziony, sterownik zwraca wartość error.NoSuchElementError.

Wykorzystanie

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

Parametry

Parametry Typ Opis
RETURN WebElementPromise Element WebElement , który może być używany do wydawania komend dla elementu znajdującego się w tym elemencie. Jeśli element nie zostanie znaleziony, element jest unieważniony, a wszystkie zaplanowane komendy są zatrzymane.
locator By, function Lokalizator do użycia.

Przykłady

Tej funkcji nie można używać do sprawdzenia, czy dany element jest obecny na stronie. Zamiast tego należy użyć elementu findElements:

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

Kryteria wyszukiwania dla elementu można zdefiniować za pomocą jednej z fabryk w przestrzeni nazw webdriver.By lub jako krótki obiekt webdriver.By.Hash . Na przykład następujące dwa instrukcje są równoważne:

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

Można również udostępnić niestandardową funkcję wskaźnika, która pobiera jako dane wejściowe tę instancję i zwraca element WebElementlub obietnicę, która zostanie rozstrzygnięta przy użyciu elementu WebElement. Jeśli zwrócona obietnica zostanie rozstrzygana przy użyciu tablicy WebElements, element WebDriver korzysta z pierwszego elementu. Na przykład, aby znaleźć pierwszy widoczny odsyłacz na stronie, można użyć następujących komend:

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

Ta przeglądarka testuje wyszukiwanie wielu elementów na stronie. Informacje na temat strategii lokalizatora elementów zawiera sekcja findElement.

Wykorzystanie

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

Parametry

Parametry Typ Opis
RETURN Przyrzeczenie<WebElement[] > Obietnica, która zostanie rozstrzygnięta przy użyciu tablicy elementów WebElements.
locator By, function Lokalizator do użycia.

pobierz

Ten interfejs API testowania przeglądarki jest adresowany do konkretnego adresu URL.

Wykorzystanie

$browser.get(url: string): Promise<void>;

Parametry

Parametry Typ Opis
RETURN Promise<void> Obietnica, która zostanie rozwiązana po zakończeniu ładowania dokumentu.
url string Pełny adres URL do otwarcia.

getAllWindowHandles

Ta przeglądarka testuje harmonogramy API, aby pobrać bieżącą listę dostępnych uchwytów okien.

Wykorzystanie

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

Parametry

Parametr Typ Opis
RETURN Promise<string[]> Obietnica, która zostanie rozwiązana przy użyciu tablicy uchwytów okien.

getCapabilities

Ten interfejs API testowania przeglądarki pobiera możliwościtej instancji.

Wykorzystanie

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

Parametry

Parametr Typ Opis
RETURN Promise<Capabilities> Obietnica, która zostanie rozstrzygnięta przy użyciu możliwości tej instancji.

Adres URL getCurrent

Ta przeglądarka testuje interfejs API w celu pobrania adresu URL bieżącej strony.

Wykorzystanie

$browser.getCurrentUrl(): Promise<string>;

Parametry

Parametr Typ Opis
RETURN Promise<string> Obietnica, która zostanie rozstrzygnięta przy użyciu bieżącego adresu URL.

getHeaders

Ta przeglądarka testowania interfejsu API pobiera dostosowane nagłówki użytkownika.

Wykorzystanie

$browser.getHeaders(): Map<string, any>;

Parametry

Parametr Typ Opis
RETURN Map<string, any> Nagłówki zdefiniowane przez użytkownika

Przykłady

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

Źródło getPage

Ten interfejs API testowania przeglądarki pobiera źródło bieżącej strony. Zwrócone źródło jest reprezentacją bazowego modelu DOM. Nie należy oczekiwać, że źródło ma zostać sformatowane lub zostało zmienione w taki sam sposób, jak surowe odpowiedzi wysłane z serwera WWW.

Wykorzystanie

$browser.getPageSource(): Promise<string>;

Parametry

Parametr Typ Opis
RETURN Promise<string> Obietnica, która zostanie rozstrzygnięta przy użyciu bieżącego źródła strony.

getProxy

Ta przeglądarka testowania interfejsu API pobiera bieżącą konfigurację serwera proxy.

Wykorzystanie

$browser.getProxy(): FFProxyConfig | CProxyConfig;

Ten interfejs API może być również wywoływany za pośrednictwem obiektu $network :

$network.getProxy(): FFProxyConfig | CProxyConfig;

Parametry

Parametr Typ Opis
RETURN CProxyConfig lub FFProxyConfig Obiekt konfiguracyjny proxy w hermetyzacji przeglądarki Chrome lub Firefox.

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

Ten interfejs API testowania przeglądarki pobiera sesjętego klienta.

Wykorzystanie

$browser.getSession(): Promise<Session>;

Parametry

Parametr Typ Opis
RETURN Promise<Session> Obietnica dla sesji tego klienta.

getTitle

Ta przeglądarka testuje interfejs API, aby pobrać komendę do pobrania tytułu bieżącej strony.

Wykorzystanie

$browser.getTitle(): Promise<string>;

Parametry

Parametr Typ Opis
RETURN Promise<string> Obietnica, która zostanie rozstrzygnięta przy użyciu tytułu bieżącej strony.

Uchwyt getWindow

Ta przeglądarka testuje interfejs API, aby pobrać komendę do pobrania bieżącego uchwytu okna.

Wykorzystanie

$browser.getWindowHandle(): Promise<string>;

Parametry

Parametr Typ Opis
RETURN Promise<string> Obietnica, która zostanie rozwiązana przy użyciu bieżącego uchwytu okna.

Zarządzanie

Ten interfejs API testowania przeglądarki pobiera interfejs opcji dla tej instancji.

Wykorzystanie

$browser.manage(): Options;

Parametry

Parametr Typ Opis
RETURN Options Interfejs opcji dla tej instancji.

Opcje

Opcje udostępniają metody zarządzania stanem przeglądarki i sterownika.

Typ Opis
addCookie(spec: IWebDriverOptionsCookie): Promise<void> Zaplanowanie komendy w celu dodania informacji cookie.
deleteAllCookies(): Promise<void>; Służy do planowania komendy w celu usunięcia wszystkich informacji cookie widocznych dla bieżącej strony.
deleteCookie(name: string): Promise<void>; Służy do planowania komendy usuwania informacji cookie o podanej nazwie. Jeśli żadna informacja cookie o danej nazwie nie jest widoczna dla bieżącej strony, ta komenda nie jest operacją typu "no-op".
getCookies(): Promise<IWebDriverCookie[]>; Zaplanowanie komendy w celu pobrania wszystkich informacji cookie cookies widocznych dla bieżącej strony. Każda informacja cookie jest zwracana jako obiekt JSON zgodnie z opisem w protokole łącznika WebDriver .
getCookie(name: string): Promise<IWebDriverCookie>; Zaplanowanie komendy w celu pobrania informacji cookie cookie o podanej nazwie. Zwraca wartość null, jeśli taka informacja cookie nie jest dostępna. Informacja cookie jest zwracana jako obiekt JSON, zgodnie z opisem w protokole łącznika WebDriver .
logs(): Logs; Udostępnia interfejs do zarządzania dziennikami sterowników.
getTimeouts(): Promise<ITimeouts>; Pobiera bieżące limity czasu.
setTimeouts(timeouts: ITimeouts): Promise<void>; Ustawia bieżące limity czasu.
window(): Window; Udostępnia interfejs do zarządzania bieżącym oknem.

IWebDriverCookie

Parametry Typ Opis
name string Nazwa informacji cookie.
value string Wartość informacji cookie.
path string Ścieżka informacji cookie. Wartość domyślna to "/", gdy informacja cookie jest dodawana.
domain string Domena, do której jest widoczna informacja cookie. Domyślnie jest to adres URL bieżącego kontekstu przeglądania dokumentu, gdy zostanie dodany plik cookie.
secure boolean Ten parametr wskazuje, czy informacja cookie jest zabezpieczoną informacją cookie. Wartością domyślną jest false, co oznacza, że informacja cookie nie jest zabezpieczoną informacją cookie.
httpOnly boolean Ten parametr wskazuje, czy informacja cookie jest tylko informacją cookie HTTP. Wartością domyślną jest false, co oznacza, że informacja cookie nie jest tylko informacją cookie HTTP.
expiry number Termin ważności jest zawsze zwracany w sekundach od momentu pobrania informacji cookie z przeglądarki.

ITimeouts

Parametr Typ Opis
script number Określa maksymalną ilość czasu oczekiwania na uruchomienie ocenianego skryptu.
pageLoad number Określa maksymalną ilość czasu oczekiwania na zakończenie ładowania strony. Wartość domyślna to 300000 milisekund.
implicit number Określa maksymalny czas oczekiwania na powodzenie wskaźnika elementu podczas znajdowania elementów na stronie. Wartość domyślna to 0 milisekund.

Okno

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

Interfejs do zarządzania bieżącym oknem.

Typ Opis
getPosition(): Promise<ILocation>; Pobiera bieżącą pozycję okna w stosunku do lewej górnej części ekranu.
setPosition(x: number, y: number): Promise<void>; Służy do zmiany pozycji bieżącego okna.
getSize(): Promise<ISize>; Pobiera bieżącą wielkość okna.
setSize(width: number, height: number): Promise<void>; Umożliwia zmianę wielkości bieżącego okna.
getRect(): Promise<IRectangle>; Zwraca bieżącą wielkość i pozycję okna najwyższego poziomu.
setRect({x, y, width, height}: Partial<IRectangle>): Promise<IRectangle>; Ustawia wielkość i pozycję okna bieżącego najwyższego poziomu. Można zaktualizować tylko wielkość, pomijając opcje x i y lub tylko pozycję, pomijając opcje width i height .
maximize(): Promise<void>; Maksymalizuje bieżące okno.

Przykłady

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

Ten interfejs API testowania przeglądarki pobiera interfejs nawigacyjny dla tej instancji.

Wykorzystanie

$browser.navigate(): Navigation;

Parametry

Parametr Typ Opis
RETURN Navigation Interfejs nawigacji dla tej instancji.

Interfejs nawigacyjny do przechowania w przód i w tył w historii przeglądarki.

Typ Opis
to(url: string): Promise<void>; Służy do planowania komendy, która ma przejść do nowego adresu URL.
back(): Promise<void>; Umożliwia zaplanowanie wykonania komendy w celu przejścia wstecz w historii przeglądarki.
forward(): Promise<void>; Służy do planowania komendy, która ma być przeniesiona do historii przeglądarki.
refresh(): Promise<void>; Służy do planowania komendy w celu odświeżenia bieżącej strony.

setAuthentication

Ten interfejs API testowania interfejsu API zmienia ustawienia uwierzytelniania dla nadchodzących żądań HTTP.

Wykorzystanie

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

Parametry

Parametry Typ Opis
RETURN Promise<void> Jeśli ustawienia zostaną zastosowane, rozstrzygnięta zostanie obietnica.
authName string Nazwa użytkownika na potrzeby uwierzytelniania.
authPass string Hasło użytkownika na potrzeby uwierzytelniania.

Przykłady

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

setProxy

Ten interfejs API testowania przeglądarki ustawia serwer proxy, który ma być używany dla wszystkich żądań HTTP, HTTPS i FTP.

Wykorzystanie

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

Ten interfejs API może być również wywoływany za pośrednictwem obiektu $network .

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

Parametry

Parametry Typ Opis
RETURN Promise<void> Jeśli ustawienia zostaną zastosowane, rozstrzygnięta zostanie obietnica.
proxyURL string, URL Łańcuch adresu URL do połączenia z serwerem proxy. Łańcuch adresu URL musi być w formacie zdefiniowanym w metodzie Node's url.parse(urlString). Na przykład: http://proxy_host:8888 lub https://user:pass@proxy_host:8888 .
noProxy string Opcjonalnie: rozdzielana przecinkami lista hostów, które pomija wszystkie proxy.

setProxyAdvanced

Ten interfejs API testowania przeglądarki ustawia konfigurację serwera proxy przy użyciu formatu obsługiwanego przez funkcję API rozszerzenia przeglądarki Chrome lub Firefox dla proxy.

Wykorzystanie

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

Ten interfejs API może być również wywoływany za pośrednictwem obiektu $network .

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

Parametry

Parametr Typ Opis
RETURN Promise<void> Jeśli ustawienia zostaną zastosowane, rozstrzygnięta zostanie obietnica.
proxyConfig CProxyConfig lub FFProxyConfig Obiekt konfiguracyjny proxy w hermetyzacji specyficznej dla przeglądarki Chrome lub Firefox.
authName string Opcjonalnie: Nazwa użytkownika serwera proxy na potrzeby uwierzytelniania.
authPass string Opcjonalnie: hasło użytkownika serwera proxy na potrzeby uwierzytelniania.

Przykłady

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

Uwierzytelnianie setProxy

Ta przeglądarka testowania interfejsu API zmienia ustawienia uwierzytelniania proxy dla nadchodzących żądań HTTP, HTTPS i FTP.

Wykorzystanie

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

Parametry

Parametry Typ Opis
RETURN Promise<void> Jeśli ustawienia zostaną zastosowane, rozstrzygnięta zostanie obietnica.
authName string Nazwa użytkownika serwera proxy na potrzeby uwierzytelniania.
authPass string Hasło użytkownika serwera proxy na potrzeby uwierzytelniania.

Przykłady

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

Ten interfejs API testowania przeglądarki ustawia serwer proxy, który ma być używany dla wszystkich żądań HTTP.

Wykorzystanie

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

Ten interfejs API może być również wywoływany za pośrednictwem obiektu $network .

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

Parametry

Parametr Typ Opis
RETURN Promise<void> Jeśli ustawienia zostaną zastosowane, rozstrzygnięta zostanie obietnica.
proxyURL string, URL Łańcuch adresu URL do połączenia z serwerem proxy. Łańcuch adresu URL musi mieć format zdefiniowany w metodzie Node's url.parse(urlString) method. Na przykład: http://proxy_host:8888 lub https://user:pass@proxy_host:8888 .
noProxy string Opcjonalnie: rozdzielana przecinkami lista hostów, które muszą pomijać wszystkie proxy.

Przykłady

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

Ten interfejs API testowania przeglądarki ustawia serwer proxy, który ma być używany dla wszystkich żądań HTTPS.

Wykorzystanie

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

Ten interfejs API może być również wywoływany za pośrednictwem obiektu $network .

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

Parametry

Parametr Typ Opis
RETURN Promise<void> Obietnica jest rozstrzygana po zastosowaniu ustawień
proxyURL string, URL Łańcuch adresu URL do połączenia z serwerem proxy. Łańcuch adresu URL musi być w formacie zdefiniowanym w metodzie Node's url.parse(urlString). Na przykład: http://proxy_host:8888 lub https://user:pass@proxy_host:8888 .
noProxy string Opcjonalnie: rozdzielana przecinkami lista hostów, które muszą pomijać wszystkie proxy.

Przykłady

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

Ten interfejs API testowania przeglądarki ustawia serwer proxy za pomocą skryptu proxy automatycznego konfigurowania (PAC).

Wykorzystanie

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

Parametry

Parametr Typ Opis
RETURN Promise<void> Jeśli ustawienia zostaną zastosowane, rozstrzygnięta zostanie obietnica.
pacScriptURL string Adres URL skryptu PAC.
noProxy string Opcjonalnie: rozdzielana przecinkami lista hostów, które muszą pomijać wszystkie proxy.
authMap Map Opcjonalnie: mapa referencji uwierzytelniających, które mają zostać udostępnione serwerom proxy, które są zabezpieczone przez serwer Hostname serwerów proxy. Wartości tego odwzorowania muszą być zdefiniowane w formacie {username: "authUsername", password: "authPassword"}.

Przykłady

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

sleep

Ta przeglądarka testuje harmonogramy API, aby sterownik mógł zasnąć przez określony czas.

Wykorzystanie

$browser.sleep(ms: number): Promise<void>;

Parametry

Parametry Typ Opis
RETURN Promise<void> Obietnica, która zostanie rozwiązana po zakończeniu snu.
ms number Ilość czasu (w milisekundach) do uśpienia.

Przykłady

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

switchTo

Ta przeglądarka testowania interfejsu API pobiera interfejs, który umożliwia zmianę obiektu aktywnego sterownika na inną ramkę lub okno.

Wykorzystanie

$browser.switchTo(): TargetLocator;

Parametry

Parametr Typ Opis
RETURN TargetLocator Interfejs TargetLocator dla tej instancji.

TargetLocator

Interfejs przeznaczony do zmiany ostrości sterownika na inną ramkę lub okno.

Metody instancji

Typ Opis
activeElement(): WebElementPromise; Zaplanowanie komendy wczytanie elementu document.activeElement w bieżącym dokumencie lub document.body , jeśli program activeElement nie jest dostępny.
defaultContent(): Promise<void>; Zaplanowanie komendy, która przełącza koncentrowanie wszystkich przyszłych komend na pierwszą ramkę na stronie. Ramkę docelową można określić jako jedną z następujących wartości:
-Numer, który określa indeks (oparty na zerach) na window.frames.
-Odwołanie WebElement , które odpowiada elementowi DOM frame lub iframe DOM.
-wartość null , aby wybrać ramkę najwyższego poziomu na stronie. Przekazywanie null jest takie samo, jak wywołanie defaultContent.
frame(id: Number |WebElement| null): Promise<void>; Powoduje zmianę obiektu aktywnego ze wszystkich przyszłych komend na inną ramkę na stronie.
parentFrame(): Promise<void>; Powoduje zmianę obiektu aktywnego wszystkich przyszłych komend na ramkę nadrzędną aktualnie wybranej ramki. Ta komenda nie ma wpływu, jeśli sterownik jest już aktywny w kontekście przeglądania najwyższego poziomu.
window(nameOrHandle: string): Promise<void>; Zaplanowanie komendy, która przełącza koncentrowanie wszystkich przyszłych komend na inne okno. Okna mogą być określane przez ich atrybut window.name lub przez ich uchwyt (co jest zwracane przez getWindowHandle).
newWindow(typeHint: string): Promise<void>; Tworzy okno przeglądarki i przełącza uwagę na przyszłe komendy tego sterownika do nowego okna.
typeHint 'window' lub 'tab'. Nie ma gwarancji, że utworzone okno ma typ żądanego typu. Jeśli sterownik nie obsługuje żądanego typu, zostanie utworzone nowe okno przeglądarki niezależnie od typu, który obsługuje sterownik.
Zwrócone obietnice są rozstrzygane, gdy sterownik zmieni się w nowym oknie.
alert(): AlertPromise; Zaplanowanie komendy w celu aktywowania aktywnego dialogu modalnego, takiego jak te, które zostały otwarte przez produkty window.alert(), window.confirm()i window.prompt(). Zwracana obietnica jest odrzucana wraz z error.NoSuchAlertError , jeśli nie są dostępne żadne otwarte alerty.

Przykłady

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

Ta przeglądarka testuje interfejs API, aby wykonać komendę, aby wykonać zrzut ekranu. Sterownik próbuje zwrócić zrzut ekranu następujących elementów, w kolejności preferencji:

  1. Cała strona
  2. Bieżące okno
  3. Widoczna część bieżącej ramki
  4. Cały ekran zawierający przeglądarkę

Wykorzystanie

$browser.takeScreenshot(): Promise<string>;

Parametry

Parametr Typ Opis
RETURN Promise<string> Obietnica, która zostanie rozwiązana za pomocą zrzutu ekranu jako pliku PNG zakodowanego w formacie base-64 .

Oczekiwanie na

Ta przeglądarka testowania interfejsu API oczekuje na warunek, aby wartościować się do wartości "truthy". Warunek może być określony przez Warunek, jako funkcję niestandardową lub dowolną obietnicę, taką jak thenable.

W przypadku warunku Warunek lub funkcji oczekiwanie wielokrotnie wartościuje warunek, aż do momentu, w którym zostanie zwrócona wartość truthy. W przypadku wystąpienia błędów podczas wartościowania warunku przez interfejs API błędy mogą być propagowane. Gdy warunek zwraca obietnicę, pętla odpytywania oczekuje na rozstrzyganie i używa rozstrzygniętej wartości w celu sprawdzenia, czy warunek jest spełniony. Czas rozwiązania dla danej obietnicy jest zawsze uwzględniany w celu sprawdzenia, czy limit czasu oczekiwania został przekroczony.

Jeśli warunkiem jest warunek WebElement, wówczas oczekiwanie zwraca obiekt WebElementPromise , który jest tłumaczona na element spełniający warunek.

Wykorzystanie

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

Parametry

Parametr Typ Opis
RETURN Promise<string> Obietnica, która zostanie rozwiązana przy użyciu pierwszej wartości typu truthy zwróconej przez funkcję warunku lub odrzuconej w przypadku, gdy nastąpi przekroczenie limitu czasu. Jeśli warunek wejściowy jest instancją warunku WebElementCondition, zwrócona wartość jest WebElementPromise.
condition IThenable<(T|null)> lub Condition<(T|null)> lub function(WebDriver): (T|null) Warunek, który ma czekać, zdefiniowany jako obiekt warunku, obiekt warunku lub funkcja do oceny jako warunek.
opt_timeout number Czas trwania (w milisekundach) oczekiwania na warunek spełnienia warunku.
opt_message string lub function Opcjonalny komunikat, który ma zostać użyty, jeśli limit czasu oczekiwania zostanie wyczerpany.

Przykłady

Przykład 1: Aby czekać do 10 sekund na obecność elementu na stronie, należy użyć komend, jak pokazano w poniższym przykładzie:

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

Przykład 2: Aby czekać na element i kliknąć, należy użyć komend w sposób przedstawiony w poniższym przykładzie:

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

Element waitForAndFind

Ta przeglądarka testuje oczekiwania interfejsu API i znajduje element na stronie i oczekuje, aż będzie on widoczny. Jeśli nie zostanie znaleziony, monitorowanie syntetyczne zwróci błąd. Wartość limitu czasu jest opcjonalna. Jest on stosowany oddzielnie do obu zadań związanych ze znalezieniem elementu i czekając na jego widoczność. W najgorszym przypadku metoda ta może przyjąć maksymalnie dwa razy więcej niż podana wartość limitu czasu. Domyślna wartość limitu czasu to 1000 ms (1 sekunda).

WebElementPromise jest zwracany, jeśli element znajduje się w lokalizatorze podanym w parametrach, a element staje się widoczny, lub gdy podane warunki nie są spełnione w ramach określonego timeout.

Wykorzystanie

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

Funkcja jest podobna w następujący sposób:

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

Parametry

Parametry Typ Opis
RETURN WebElementPromise Element WebElement , który może być używany do wydawania komend dla elementu znajdującego się w tym elemencie. Jeśli element nie zostanie znaleziony, element jest unieważniony, a wszystkie zaplanowane komendy są zatrzymane.
locator by.By | function Lokalizator do użycia.
timeout number Opcjonalnie: Czas (w milisekundach) oczekiwania.

Przykłady

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

waitForPendingRequests

Ta funkcja jest kompatybilna z wcześniejszymi wersjami.

Wykorzystanie

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

Funkcja jest podobna do

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

Parametry

Parametry Typ Opis
RETURN Promise<void> Obietnica, która zostanie rozwiązana po zakończeniu ładowania dokumentu i wszystkich zasobów podrzędnych.
timeout number Ilość czasu (w milisekundach) oczekiwania.