Skorowidz funkcji API produktu 
Istnieje możliwość wyświetlenia informacji referencyjnych dla interfejsów API testowania przeglądarki.
- działania
- addHeader
- addHeaders
- addHostnamesToDenylist
- addHostnamesToAllowlist
- addHostnameToDenylist
- addHostnameToAllowlist
- clearProxy
- deleteHeader
- deleteHeaders
- deleteHostnameFromDenylist
- deleteHostnameFromAllowlist
- deleteHostnamesFromDenylist
- deleteHostnamesFromAllowlist
- dolar-dolar
- Znak dolara
- Wykonaj
- Skrypt executeAsync
- executeScript
- findElement
- findElements
- get (pobrać)
- getAllWindowHandles
- getCapabilities
- getCurrentAdres URL
- getHeaders
- getPageŹródło
- getProxy
- getSession
- getTitle
- getWindowUchwyt
- zarządzanie
- nawigowanie
- setAuthentication
- setProxy
- setProxyAdvanced
- Uwierzytelnianie produktu setProxy
- setProxyForHttp
- setProxyForHttps
- setProxyPAC
- uśpienie
- switchTo
- takeScreenshot
- czekaj
- Element waitForAndFind
- waitForPendingRequests
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. |
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);
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:
- Cała strona
- Bieżące okno
- Widoczna część bieżącej ramki
- 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. |