API リファレンス
ブラウザー・テスト API の参照情報を表示できます。
アクション
このブラウザー・テスト API 関数は、 WebDriverを使用して新しいアクション・シーケンスを作成します。 コード内で Actions.perform() 関数を呼び出すまで、シーケンスは実行依頼されません。
使用法
$browser.actions().sendKeys("synthetic").perform();
パラメーター
パラメーター | タイプ | 説明 |
---|---|---|
RETURN |
Actions |
このインスタンスの新規アクション・シーケンス。 |
options |
Object |
「アクション」 シーケンスの構成オプション。 |
例
例 1: クリックするには、以下のコードを使用します。
const element = await $browser.waitForAndFindElement(by, timeout);
$browser.actions().move({origin: element}).press().release().perform();
例 2: ブラウザー・エレメントの上にマウスを移動するには、以下のコードを使用します。
const element = await $browser.waitForAndFindElement(by, timeout);
$browser.actions().move({origin: element, duration: 2000}).perform();
旧 mouseMove
機能と互換性を持たせるには、以下のコマンドを使用します。
$browser.actions().mouseMove(element).perform();
ブラウザー・テスト API は、以前のバージョンとの互換性のために $browser.actions().mouseMove()
メソッドをサポートし、 $browser.actions().move()
を使用してこのメソッドを実装します。これは、この PRでこのメソッドが 2021 年に Selenium によって削除されたためです。
例 3: 鍵を送信するには、以下のコードを実行します。
await $browser.get("http://www.bing.com");
await $browser.actions().sendKeys("synthetic").perform();
addHeader
このブラウザテストAPIは HTTP リクエストのヘッダーを変更する。
使用法
$browser.addHeader(key: string, val: string): Promise<void>;
パラメーター
パラメーター | タイプ | 説明 |
---|---|---|
RETURN |
Promise<void> |
戻り値は promise です。 |
key |
string |
HTTP ヘッダー名。 |
val |
string |
HTTP ヘッダーの値。 |
例
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
このブラウザテストAPIは HTTP リクエストのヘッダーを変更する。
使用法
$browser.addHeaders(headers: { [key: string]: string }): Promise<void>;
パラメーター
パラメーター | タイプ | 説明 |
---|---|---|
RETURN |
Promise<void> |
戻り値は promise です。 |
headers |
{ [key: string]: string } |
HTTPヘッダー |
例
await $browser.addHeaders({
key1: "val1",
key2: "val2",
});
addHostnamesToDenylist
このブラウザー・テスト API は、ホスト名を拒否リストに追加します。
使用法
$browser.addHostnamesToDenylist(hostnameArr: string[]): Promise<void>
Instanaは URL フィルタリングのために addHostnamesToDenylist
関数を提供していますが、以前のバージョンとのコードの互換性を確保するために addHostnamesToBlacklist
関数を削除していません。
$browser.addHostnamesToBlacklist(hostnameArr: string[]): Promise<void>
パラメーター
パラメーター | タイプ | 説明 |
---|---|---|
RETURN |
Promise<void> |
戻り値は promise です。 |
hostnameArr |
string[] |
突き合わせるホスト名、およびワイルドカードをサポートするホスト名 |
例
await $browser.addHostnamesToDenylist(["*.css", "*.png"]);
await $browser.addHostnamesToAllowlist(["*"]);
addHostnamesToAllowlist
このブラウザー・テスト API は、許可リストにホスト名を追加します。
使用法
$browser.addHostnamesToAllowlist(hostnameArr: string[]): Promise<void>
Instanaは URL フィルタリングのために addHostnamesToAllowlist
関数を提供していますが、以前のバージョンとのコードの互換性を確保するために addHostnamesToWhitelist
関数を削除していません。
$browser.addHostnamesToWhitelist(hostnameArr: string[]): Promise<void>
パラメーター
パラメーター | タイプ | 説明 |
---|---|---|
RETURN |
Promise<void> |
戻り値は promise です。 |
hostnameArr |
string[] |
突き合わせるホスト名。ワイルドカードをサポートします。 |
例
await $browser.addHostnamesToDenylist(["*.css", "*.png"]);
await $browser.addHostnamesToAllowlist(["*"]);
addHostnameToDenylist
このブラウザー・テスト API は、ホスト名を拒否リストに追加します。
使用法
$browser.addHostnameToDenylist(hostname: string): Promise<void>
Instanaは URL フィルタリングのために addHostnameToDenylist
関数を提供していますが、以前のバージョンとのコードの互換性を確保するために addHostnameToBlacklist
関数を削除していません。
$browser.addHostnameToBlacklist(hostname: string): Promise<void>
パラメーター
パラメーター | タイプ | 説明 |
---|---|---|
RETURN |
Promise<void> |
戻り値は promise です。 |
hostname |
string |
突き合わせるホスト名、およびワイルドカードをサポートするホスト名 |
例
await $browser.addHostnameToDenylist(`*.css`);
await $browser.addHostnameToAllowlist(`*`);
addHostnameToAllowlist
このブラウザー・テスト API は、許可リストにホスト名を追加します。
使用法
$browser.addHostnameToAllowlist(hostname: string): Promise<void>
Instanaは URL フィルタリングのために addHostnameToAllowlist
関数を提供していますが、以前のバージョンとのコードの互換性を確保するために addHostnameToWhitelist
関数を削除していません。
$browser.addHostnameToWhitelist(hostname: string): Promise<void>
パラメーター
パラメーター | タイプ | 説明 |
---|---|---|
RETURN |
Promise<void> |
戻り値は promise です。 |
hostname |
string |
突き合わせるホスト名。ワイルドカードをサポートします。 |
例
await $browser.addHostnameToDenylist(`*.css`);
await $browser.addHostnameToAllowlist(`*`);
clearProxy
このブラウザー・テスト API は、現在のプロキシー構成をクリアまたは削除します。
使用法
$browser.clearProxy(): Promise<void>;
deleteHeader
このブラウザー・テスト API は、ユーザー定義ヘッダーを削除します。
使用法
$browser.deleteHeader(key: string): Promise<void>;
パラメーター
パラメーター | タイプ | 説明 |
---|---|---|
RETURN |
Promise<void> |
このコマンドの完了時に解決される promise。 |
key |
string |
HTTP ヘッダー名。 |
例
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
このブラウザー・テスト API は、ユーザー定義ヘッダーを削除します。
使用法
$browser.deleteHeaders: (header: string[]) => Promise<void>;
パラメーター
パラメーター | タイプ | 説明 |
---|---|---|
RETURN |
Promise<void> |
このコマンドの完了時に解決される promise。 |
header |
string[] |
HTTP ヘッダー名。 |
例
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
このブラウザー・テスト API は、拒否リストからホスト名を削除します。
使用法
$browser.deleteHostnameFromDenylist(hostname: string): Promise<void>;
Instanaは URL フィルタリングのために deleteHostnameFromDenylist
関数を提供していますが、以前のバージョンとのコードの互換性を確保するために deleteHostnameFromBlacklist
関数を削除していません。
$browser.deleteHostnameFromBlacklist(hostname: string): Promise<void>;
パラメーター
パラメーター | タイプ | 説明 |
---|---|---|
RETURN |
Promise<void> |
戻り値は promise です。 |
hostname |
string |
突き合わせるホスト名。ワイルドカードをサポートします。 |
deleteHostnameFromAllowlist
このブラウザー・テスト API は、許可リストからホスト名を削除します。
使用法
$browser.deleteHostnameFromAllowlist(hostname: string): Promise<void>;
このコードは deleteHostnameFromAllowlist
関数を API に追加しますが、コードが以前のバージョンと互換性を持つようにするために deleteHostnameFromWhitelist
関数を削除することはありません。
$browser.deleteHostnameFromWhitelist(hostname: string): Promise<void>;
パラメーター
パラメーター | タイプ | 説明 |
---|---|---|
RETURN |
Promise<void> |
戻り値は promise です。 |
hostname |
string |
突き合わせるホスト名。ワイルドカードをサポートします。 |
deleteHostnamesFromDenylist
このブラウザー・テスト API は、拒否リストからホスト名を削除します。
使用法
$browser.deleteHostnamesFromDenylist(hostnameArr: string[]): Promise<void>
Instanaは URL フィルタリングのために deleteHostnamesFromDenylist
関数を提供していますが、以前のバージョンとのコードの互換性を確保するために deleteHostnamesFromBlacklist
関数を削除していません。
$browser.deleteHostnamesFromBlacklist(hostnameArr: string[]): Promise<void>
パラメーター
パラメーター | タイプ | 説明 |
---|---|---|
RETURN |
Promise<void> |
戻り値は promise です。 |
hostnameArr |
string[] |
突き合わせるホスト名。ワイルドカードをサポートします。 |
deleteHostnamesFromAllowlist
このブラウザー・テスト API は、許可リストからホスト名を削除します。
使用法
$browser.deleteHostnamesFromAllowlist(hostnameArr: string[]): Promise<void>
Instanaは URL フィルタリングのために deleteHostnamesFromAllowlist
関数を提供していますが、以前のバージョンとのコードの互換性を確保するために deleteHostnamesFromWhitelist
関数を削除していません。
$browser.deleteHostnamesFromWhitelist(hostnameArr: string[]): Promise<void>
パラメーター
パラメーター | タイプ | 説明 |
---|---|---|
RETURN |
Promise<void> |
戻り値は promise です。 |
hostnameArr |
string[] |
突き合わせるホスト名。ワイルドカードをサポートします。 |
ドルドル
$$
コマンドは、ページ上の複数のエレメントをフェッチするために findElements
コマンドを呼び出すショートカットです。 このコマンドは、エレメント結果を含む配列を返します。 これらの結果には、アクション・コマンドを呼び出すための拡張プロトタイプがあります。
$
または $$
を一緒にチェーニングして、DOM ツリーをナビゲートできます。
特定のエレメントを選択する方法について詳しくは、 CSS セレクターを参照してください。
使用法
$browser.$$(selector);
パラメーター
名前 | タイプ | 説明 |
---|---|---|
RETURN |
Promise<WebElement[]> |
戻り値は、 WebElementsの配列を使用して解決される promise です。 |
selector |
String , Function |
特定のエレメントをフェッチするための Selector 関数または JavaScript 関数。 |
例
index.html ファイルは以下のとおりです。
<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>
$$
を使用して、以下のようにエレメントを検索します。
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"
});
$
$
コマンドは、ページ上の単一エレメントをフェッチするために findElement
コマンドを呼び出すショートカットです。 このコマンドはオブジェクトを戻します。 オブジェクトには、アクション・コマンドを呼び出すための拡張プロトタイプがあります。
$
または $$
を一緒にチェーニングして、DOM ツリーをナビゲートできます。
特定のエレメントを選択する方法について詳しくは、 CSS セレクターを参照してください。
使用法
$browser.$(selector): WebElementPromise;
パラメーター
名前 | タイプ | 説明 |
---|---|---|
RETURN |
WebElementPromise |
返される値はWebElementPromise です。 |
selector |
String , Function |
複数のエレメントをフェッチするためのセレクターまたは JavaScript 関数。 |
例
index.html ファイルは以下のとおりです。
<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>
次のように $を使用してエレメントを検索します。
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"
});
実行
このブラウザー・テスト API は、 WebDriverの command.Executor
を使用して、提供されている [Command
] を実行します。
使用法
$browser.execute(command) => Promise<T>
Promise<T>
は、コマンド結果で解決される promise です。
パラメーター
パラメーター | タイプ | 説明 |
---|---|---|
command |
Command |
スケジュールするコマンド |
executeAsyncScript
このブラウザー・テスト API は、現在選択されているフレームまたはウィンドウのコンテキストで非同期 JavaScript のスニペットを実行します。 スクリプト・フラグメントは、匿名関数の本体として実行されます。 スクリプトが関数オブジェクトとして提供されている場合、その関数は、ターゲット・ウィンドウに注入するためにストリングに変換されます。
スクリプトに加えて引数を指定すると、その引数はスクリプト引数として組み込まれ、 arguments
オブジェクトを使用して参照できます。 引数には、ブール値、数値、ストリング、または WebElementを指定できます。 配列およびオブジェクトは、各項目が記述されたタイプに従っている場合は、スクリプト引数として使用することもできます。
executeScriptで同期的にJavaScriptを実行するのとは異なり、この関数で実行されるスクリプトは、指定されたコールバックを開始することによって、終了したことを明示的に知らせる必要があります。 このコールバックは、常に最後の引数として実行される関数に注入されるため、 arguments[arguments.length - 1]
で参照される可能性があります。 スクリプトのコールバック関数の最初の引数に対してこの関数の戻り値を解決するには、以下のステップを実行します。
- HTML 要素の場合、値は WebElementに解決されます。
- NULL および未定義の戻り値は NULL に解決されます。
- ブール値、数値、およびストリングはそのまま解決されます。
- 関数は、ストリング表現に解決されます。
- 配列およびオブジェクトの場合、各メンバー項目は、記述された規則に従って変換されます。
使用法
$browser.executeAsyncScript<T>(script: string|Function, ...var_args: any[]): Promise<T>;
パラメーター
パラメーター | タイプ | 説明 |
---|---|---|
RETURN |
Promise.<T> |
スクリプトの戻り値を使用して解決される promise。 |
script |
string , Function |
実行するスクリプト。 |
...args |
* |
スクリプトに渡される引数です。 |
例
例 1: 現在選択されているウィンドウと同期化されたスリープを実行するには、以下の例に示すようにコマンドを使用します。
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");
});
例 2: テストを Ajax アプリケーションと同期するには、以下の例に示すようにコマンドを使用します。
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");
例 3: XMLHttpRequest
を注入して結果を待機するには、以下のコマンドを使用します。 この例では、注入スクリプトは関数リテラルで指定されています。 このフォーマットを使用すると、関数は注入のためにストリングに変換されます。 そのため、この関数は、テスト対象ページのスコープで定義されていないシンボルを参照してはなりません。
$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
このブラウザー・テスト API は、現在選択されているフレームまたはウィンドウのコンテキストで JavaScript のスニペットを実行します。 スクリプト・フラグメントは、匿名関数の本体として実行されます。 スクリプトを関数オブジェクトとして指定すると、その関数はターゲット・ウィンドウへの注入のためにストリングに変換されます。
スクリプトに加えて引数を指定すると、その引数はスクリプト引数として組み込まれ、 arguments
オブジェクトを使用して参照される可能性があります。 引数には、ブール値、数値、ストリング、または WebElementを指定できます。 配列およびオブジェクトは、各項目が記述されたタイプに従っている場合は、スクリプト引数として使用することもできます。
スクリプトは、現行ウィンドウからアクセス可能な変数を参照する場合があります。 さらに、スクリプトはウィンドウのコンテキストで実行されるため、現在の文書を参照するために document
が使用される場合があります。 グローバル変数は保持されますが、スクリプトの実行終了後に使用可能なローカル変数はありません。
スクリプトに戻り値がある場合、つまり、スクリプトに return ステートメントが含まれている場合は、この関数の戻り値を解決するために以下のステップが実行されます。
- HTML 要素の場合、値は WebElementに解決されます。
- NULL および未定義の戻り値は NULL に解決されます。
- ブール値、数値、およびストリングはそのまま解決されます。
- 関数は、ストリング表現に解決されます。
- 配列およびオブジェクトの場合、各メンバー項目は、記述された規則に従って変換されます。
使用法
$browser.executeScript<T>(script: string|Function, ...var_args: any[]): Promise<T>;
パラメーター
パラメーター | タイプ | 説明 |
---|---|---|
RETURN |
Promise.<T> |
スクリプトの戻り値を使用して解決される promise。 |
script |
string , Function |
実行するスクリプト。 |
...args |
* |
スクリプトに渡される引数です。 |
findElement
このブラウザー・テスト API は、ページ上の要素を見つけます。 エレメントが見つからない場合、ドライバーは error.NoSuchElementError
を返します。
使用法
$browser.findElement(locator: Locator): WebElementPromise;
パラメーター
パラメーター | タイプ | 説明 |
---|---|---|
RETURN |
WebElementPromise | 見つかったエレメントに対してコマンドを発行するために使用できる WebElement 。 エレメントが見つからない場合、エレメントは無効になり、スケジュールされているすべてのコマンドが停止します。 |
locator |
By , function |
使用するロケーター。 |
例
この機能を使用して、ページ上にエレメントが存在するかどうかをテストしてはなりません。 代わりに、findElementsを使う必要がある:
$browser.findElements($driver.By.id("foo"))
.then((found) => console.log("Element found? %s", !!found.length));
エレメントの検索基準を定義するには、 webdriver.By
名前空間内のいずれかのファクトリーを使用するか、短時間の webdriver.By.Hash
オブジェクトとして使用します。 例えば、以下の 2 つのステートメントは同等です。
var e1 = $browser.findElement($driver.By.id("foo"));
var e2 = $browser.findElement({ id: "foo" });
この関数はこのインスタンスを入力とし、WebElement、またはWebElement で解決されるプロミスを返します。 返されたプロミスが'WebElements,'WebDriver'の配列で解決される場合、最初の要素を使用する。 例えば、ページ上の最初の可視リンクを検索するには、以下のコマンドを使用できます。
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
このブラウザー・テスト API は、ページ上の複数の要素を検索します。 エレメント・ロケーターの方針については、「 findElement
」を参照してください。
使用法
$browser.findElements(locator: Locator): Promise<WebElement[]>;
パラメーター
パラメーター | タイプ | 説明 |
---|---|---|
RETURN |
約束<WebElement[]>(ウェブ要素 | WebElementsの配列を使用して解決される promise。 |
locator |
By , function |
使用するロケーター。 |
generateTOTPToken
このブラウザー・テスト API は、TOTP 鍵から時刻ベースのワンタイム・パスワード (TOTP) トークンを生成します。 この API を使用して、2 要素認証でログインできます。
使用法
$browser.generateTOTPToken(key: string, options?: TOTPOptions): string;
パラメーター
パラメーター | タイプ | 説明 |
---|---|---|
RETURN |
string |
時刻ベースのワンタイム・パスワード (TOTP) トークン |
key |
string |
TOTP キー、 base32 ストリング |
options |
Object ,undefined |
オプション: オプション設定 (例: {digits: 8, algorithm: "SHA-512", period: 60} )。 デフォルト設定は {digits: 6, algorithm: "SHA-1", period: 30} です。 |
例
例 1: TOTP トークンを生成し、ブラウザー・スクリプト・テストで 2 要素認証を使用してログインするには、以下のようにします。
await $browser.waitForAndFindElement($driver.By.id("password"), 15000);
let totp_token = $browser.generateTOTPToken($secure.totpKey);
await $browser.findElement($driver.By.id("password")).then((element) => {
return element.clear().then(() => {
return element.sendKeys(totp_token);
});
});
例 2: Selenium SIDE スクリプト・テストで TOTP トークンを生成するには、以下のようにします。
{
"id": "ec51296b-4d16-4167-ac83-ba87f89cc0c7",
"comment": "Generate a TOTP token from a TOTP key",
"command": "executeScript",
"target": "return $browser.generateTOTPToken($secure.totpKey);",
"targets": [],
"value": "totpToken"
}
取得
このブラウザーテストAPIは URLにアクセスする。
使用法
$browser.get(url: string): Promise<void>;
パラメーター
パラメーター | タイプ | 説明 |
---|---|---|
RETURN |
Promise<void> |
文書のロードが終了したときに解決される promise。 |
url |
string |
開く完全修飾 URL。 |
getAllWindowHandles
このブラウザー・テスト API は、使用可能なウィンドウ・ハンドルの現在のリストを取得するコマンドをスケジュールします。
使用法
$browser.getAllWindowHandles(): Promise<string[]>;
パラメーター
パラメーター | タイプ | 説明 |
---|---|---|
RETURN |
Promise<string[]> |
ウィンドウ・ハンドルの配列を使用して解決される promise。 |
getCapabilities
このブラウザー・テスト API は、このインスタンスの機能を取得します。
使用法
$browser.getCapabilities(): Promise<Capabilities>;
パラメーター
パラメーター | タイプ | 説明 |
---|---|---|
RETURN |
Promise<Capabilities> |
このインスタンスの機能によって解決される promise。 |
getCurrentUrl
このブラウザテストAPIは、現在のページの URLを取得するコマンドをスケジュールする。
使用法
$browser.getCurrentUrl(): Promise<string>;
パラメーター
パラメーター | タイプ | 説明 |
---|---|---|
RETURN |
Promise<string> |
現在の URLで解決される約束。 |
getHeaders
このブラウザー・テスト API は、ユーザーがカスタマイズしたヘッダーを取得します。
使用法
$browser.getHeaders(): Map<string, any>;
パラメーター
パラメーター | タイプ | 説明 |
---|---|---|
RETURN |
Map<string, any> |
ユーザー定義ヘッダー |
例
await $browser.addHeader('header1-xxx', 'abcd');
await $browser.addHeaders({
key1: 'val1',
key2: 'val2',
});
await $browser.deleteHeaders(['key1']);
await $browser.get(`http://localhost:${devport}/header-test`);
let userHeaders: Map<string, any> = $browser.getHeaders();
console.log("User customized headers: ", [...userHeaders]);
expect(userHeaders.size).toEqual(2);
getPageSource
このブラウザー・テスト API は、現行ページのソースを取得します。 返されるソースは、基礎となる DOM の表現です。 Web サーバーから送信される未加工の応答と同じ方法でソースがフォーマットまたはエスケープされることを想定しないでください。
使用法
$browser.getPageSource(): Promise<string>;
パラメーター
パラメーター | タイプ | 説明 |
---|---|---|
RETURN |
Promise<string> |
現在のページ・ソースで解決される promise。 |
getProxy
このブラウザー・テスト API は、現在のプロキシー構成を取得します。
使用法
$browser.getProxy(): FFProxyConfig | CProxyConfig;
この API は、 $network
オブジェクトを介して呼び出すこともできます。
$network.getProxy(): FFProxyConfig | CProxyConfig;
パラメーター
パラメーター | タイプ | 説明 |
---|---|---|
RETURN |
CProxyConfig または FFProxyConfig | プロキシー構成オブジェクト (Chrome または Firefox 固有のカプセル化)。 |
プロキシー構成
/**
* 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
このブラウザー・テスト API は、このクライアントのセッションを取得します。
使用法
$browser.getSession(): Promise<Session>;
パラメーター
パラメーター | タイプ | 説明 |
---|---|---|
RETURN |
Promise<Session> |
このクライアントのセッションの約束。 |
getTitle
このブラウザー・テスト API は、現行ページのタイトルを取得するコマンドをスケジュールします。
使用法
$browser.getTitle(): Promise<string>;
パラメーター
パラメーター | タイプ | 説明 |
---|---|---|
RETURN |
Promise<string> |
現在のページのタイトルを使用して解決される promise。 |
getWindowHandle
このブラウザー・テスト API は、現行ウィンドウ・ハンドルを取得するコマンドをスケジュールします。
使用法
$browser.getWindowHandle(): Promise<string>;
パラメーター
パラメーター | タイプ | 説明 |
---|---|---|
RETURN |
Promise<string> |
現行ウィンドウ・ハンドルを使用して解決される promise。 |
管理
このブラウザー・テスト API は、このインスタンスのオプション・インターフェースを取得します。
使用法
$browser.manage(): Options;
パラメーター
パラメーター | タイプ | 説明 |
---|---|---|
RETURN |
Options |
このインスタンスのオプション・インターフェース。 |
オプション
これらのオプションは、ブラウザーおよびドライバーの状態を管理するためのメソッドを提供します。
タイプ | 説明 |
---|---|
addCookie(spec: IWebDriverOptionsCookie): Promise<void> |
cookieを追加するコマンドをスケジュールします。 |
deleteAllCookies(): Promise<void>; |
現在のページに表示されているすべての Cookie を削除するコマンドをスケジュールします。 |
deleteCookie(name: string): Promise<void>; |
指定された名前の Cookie を削除するコマンドをスケジュールします。 指定された名前の Cookie が現行ページに表示されない場合、このコマンドはノーオペレーションです。 |
getCookies(): Promise<IWebDriverCookie[]>; |
現行ページに表示されるすべての Cookie を取得するコマンドをスケジュールします。 各 Cookie は、 WebDriver ワイヤー・プロトコルによって記述された JSON オブジェクトとして返されます。 |
getCookie(name: string): Promise<IWebDriverCookie>; |
指定された名前の cookie を取得するコマンドをスケジュールします。 そのような Cookie が使用できない場合は、NULL を返します。 WebDriver ワイヤー・プロトコルによって記述されているように、Cookie は JSON オブジェクトとして返されます。 |
logs(): Logs; |
ドライバー・ログを管理するためのインターフェースを提供します。 |
getTimeouts(): Promise<ITimeouts>; |
現在の timeoutsを取得します。 |
setTimeouts(timeouts: ITimeouts): Promise<void>; |
現在の timeoutsを設定します。 |
window(): Window; |
現在の ウィンドウを管理するためのインターフェースを提供します。 |
ITタイムアウト
パラメーター | タイプ | 説明 |
---|---|---|
script |
number |
評価済みスクリプトの実行を待機する最大時間を指定します。 |
pageLoad |
number |
ページのロードが終了するまで待機する最大時間を指定します。 デフォルトは 300000 ミリ秒です。 |
implicit |
number |
ページ上のエレメントを見つけるときに、エレメント・ロケーターが成功するのを待機する最大時間を指定します。 デフォルトは 0 ミリ秒です。 |
ウィンドウ
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;
}
現行ウィンドウを管理するためのインターフェース。
タイプ | 説明 |
---|---|
getPosition(): Promise<ILocation>; |
画面の左上を基準にして、ウィンドウの現在位置を検索します。 |
setPosition(x: number, y: number): Promise<void>; |
現行ウィンドウを位置変更します。 |
getSize(): Promise<ISize>; |
ウィンドウの現行サイズを検索します。 |
setSize(width: number, height: number): Promise<void>; |
現行ウィンドウのサイズを変更します。 |
getRect(): Promise<IRectangle>; |
現在の最上位ウィンドウのサイズと位置を戻します。 |
setRect({x, y, width, height}: Partial<IRectangle>): Promise<IRectangle>; |
現在の最上位ウィンドウのサイズと位置を設定します。 x と y を省略してサイズのみを更新することも、 width と height のオプションを省略して位置のみを更新することもできます。 |
maximize(): Promise<void>; |
現行ウィンドウを最大化します。 |
例
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
このブラウザテストAPIは、来る HTTP リクエストの認証設定を変更する。
使用法
$browser.setAuthentication(authName: string, authPass: string): Promise<void>;
パラメーター
パラメーター | タイプ | 説明 |
---|---|---|
RETURN |
Promise<void> |
設定が適用されると、promise が解決されます。 |
authName |
string |
認証用のユーザー名。 |
authPass |
string |
認証用のユーザー・パスワード。 |
例
await $browser.setAuthentication(basicauthuser, password);
await $browser.get(`http://${httpserver}/basic/page1.html`)
.then(() => $browser.takeScreenshot());
setProxy
このブラウザテストAPIは、すべての HTTP、 HTTPS、FTPリクエストに使用されるプロキシサーバーを設定します。
使用法
$browser.setProxy(proxyURL: string | URL, noProxy?: string): Promise<void>;
この API は、 $network
オブジェクトを介して呼び出すこともできます。
$network.setProxy(proxyURL: string | URL, noProxy?: string): Promise<void>
パラメーター
パラメーター | タイプ | 説明 |
---|---|---|
RETURN |
Promise<void> |
設定が適用されると、promise が解決されます。 |
proxyURL |
string , URL |
プロキシサーバーに接続するための URL 文字列。 URL 文字列は Nodeの url.parse ( urlString )メソッドで定義されているフォーマットでなければなりません。 例えば、 http://proxy_host:8888 または https://user:pass@proxy_host:8888 です。 |
noProxy |
string |
オプション: すべてのプロキシーをバイパスするホストの、コンマ区切りのリスト。 |
setProxyAdvanced
このブラウザー・テスト API は、プロキシー処理のために Chrome または Firefox Extension API でサポートされている形式を使用して、プロキシー構成を設定します。
使用法
$browser.setProxyAdvanced(proxyConfig: CProxyConfig | FFProxyConfig, authName?: string, authPass?: string): Promise<void>;
この API は、 $network
オブジェクトを介して呼び出すこともできます。
$network.setProxyAdvanced(proxyConfig: CProxyConfig | FFProxyConfig, authName?: string, authPass?: string): Promise<void>;
パラメーター
パラメーター | タイプ | 説明 |
---|---|---|
RETURN |
Promise<void> |
設定が適用されると、promise が解決されます。 |
proxyConfig |
CProxyConfig または FFProxyConfig | Chrome または Firefox に固有のカプセル化でのプロキシー構成オブジェクト。 |
authName |
string |
オプション: 認証用のプロキシー・サーバーのユーザー名。 |
authPass |
string |
オプション: 認証用のプロキシー・サーバーのユーザー・パスワード。 |
例
async function testProxyAdvanced() {
await $browser.clearProxy();
var ffconfig = {
proxyType: "manual",
//proxyType: "autoConfig",
http: proxy_4,
ssl: proxy_4,
ftp: proxy_4,
autoConfigUrl: pacfile,
passthrough: noproxy,
autoLogin: true,
}
var pxyserver = {
host: httpserver,
port: 8088,
scheme: "http",
}
var cconfig = {
mode: "fixed_servers",
rules: {
bypassList: noproxy.split(','),
fallbackProxy: {
host: "my-proxy-server.us.ibm.com",
port: 8080,
},
proxyForFtp: pxyserver,
proxyForHttp: pxyserver,
proxyForHttps: pxyserver,
},
pacScript: {
url: pacfile,
},
}
var bname = null;
await $browser.getCapabilities().then(cap=> {
bname = cap.getBrowserName();
});
var config = (bname == 'chrome') ? cconfig : ffconfig;
await $browser.setProxyAdvanced(config, proxyuser, password);
await $browser.get(`http://${httpserver}/demo/page2.html`)
.then(() => $browser.takeScreenshot());
}
setProxyAuthentication
このブラウザテストAPIは、来る HTTP、 HTTPS、FTPリクエストのプロキシ認証設定を変更する。
使用法
$browser.setProxyAuthentication(authName: string, authPass: string): Promise<void>;
パラメーター
パラメーター | タイプ | 説明 |
---|---|---|
RETURN |
Promise<void> |
設定が適用されると、promise が解決されます。 |
authName |
string |
認証用のプロキシー・サーバーのユーザー名。 |
authPass |
string |
認証用のプロキシー・サーバーのユーザー・パスワード。 |
例
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
このブラウザテストAPIは、すべての HTTP リクエストに使用されるプロキシサーバーを設定する。
使用法
$browser.setProxyForHttp(proxyURL: string | URL, noProxy?: string): Promise<void>
この API は、 $network
オブジェクトを介して呼び出すこともできます。
$network.setProxyForHttp(proxyURL: string | URL, noProxy?: string): Promise<void>
パラメーター
パラメーター | タイプ | 説明 |
---|---|---|
RETURN |
Promise<void> |
設定が適用されると、promise が解決されます。 |
proxyURL |
string , URL |
プロキシサーバーに接続するための URL 文字列。 URL 文字列は Nodeの url.parse ( urlString )メソッドで定義されているフォーマットでなければなりません。 例えば、 http://proxy_host:8888 または https://user:pass@proxy_host:8888 です。 |
noProxy |
string |
オプション: すべてのプロキシーをバイパスする必要があるホストのコンマ区切りリスト。 |
例
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
このブラウザテストAPIは、すべての HTTPS リクエストに使用されるプロキシサーバーを設定する。
使用法
$browser.setProxyForHttps(proxyURL: string | URL, noProxy?: string): Promise<void>;
この API は、 $network
オブジェクトを介して呼び出すこともできます。
$network.setProxyForHttps(proxyURL: string | URL, noProxy?: string): Promise<void>;
パラメーター
パラメーター | タイプ | 説明 |
---|---|---|
RETURN |
Promise<void> |
設定が適用されると promise が解決されます |
proxyURL |
string , URL |
プロキシサーバーに接続するための URL 文字列。 URL 文字列は Nodeの url.parse ( urlString )メソッドで定義されているフォーマットでなければなりません。 例えば、 http://proxy_host:8888 または https://user:pass@proxy_host:8888 です。 |
noProxy |
string |
オプション: すべてのプロキシーをバイパスする必要があるホストのコンマ区切りリスト。 |
例
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
このブラウザー・テスト API は、プロキシー自動構成 (PAC) スクリプトを介してプロキシー・サーバーを設定します。
使用法
$browser.setProxyPAC(pacScriptURL: string, noProxy?: string, authMap?: Map<string, any>): Promise<void>;
パラメーター
パラメーター | タイプ | 説明 |
---|---|---|
RETURN |
Promise<void> |
設定が適用されると、promise が解決されます。 |
pacScriptURL |
string |
PACスクリプトの URL。 |
noProxy |
string |
オプション: すべてのプロキシーをバイパスする必要があるホストのコンマ区切りリスト。 |
authMap |
Map |
オプション: プロキシー・サーバーに提供される認証資格情報のマップ。プロキシー・サーバーの Hostname によって鍵が設定されます。 このマップの値は、 {username: "authUsername", password: "authPassword"} の形式で定義する必要があります。 |
例
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());
}
スリープ
このブラウザー・テスト API は、ドライバーを特定の時間スリープ状態にするコマンドをスケジュールします。
使用法
$browser.sleep(ms: number): Promise<void>;
パラメーター
パラメーター | タイプ | 説明 |
---|---|---|
RETURN |
Promise<void> |
スリープ終了時に解決される約束。 |
ms |
number |
スリープにかかる時間 (ミリ秒)。 |
例
await $browser.get("https://www.yahoo.com/");
await $browser.sleep(3 * 1000);
await $browser.takeScreenshot();
switchTo
このブラウザー・テスト API は、ドライバーのフォーカスを別のフレームまたはウィンドウに変更するためのインターフェースを取得します。
使用法
$browser.switchTo(): TargetLocator;
パラメーター
パラメーター | タイプ | 説明 |
---|---|---|
RETURN |
TargetLocator | このインスタンスの TargetLocator インターフェース。 |
TargetLocator
ドライバーのフォーカスを別のフレームまたはウィンドウに変更するためのインターフェース。
インスタンス・メソッド
タイプ | 説明 |
---|---|
activeElement(): WebElementPromise; |
現在の文書の document.activeElement エレメント、または activeElement が使用できない場合は document.body エレメントを取得するコマンドをスケジュールします。 |
defaultContent(): Promise<void>; |
今後のすべてのコマンドのフォーカスをページの最初のフレームに切り替えるコマンドをスケジュールします。 ターゲット・フレームは、以下のいずれかの値として指定できます。 - window.framesに対する (ゼロ・ベースの) 索引を指定する数値。 - frame または iframe DOM エレメントに対応する WebElement 参照。 -ページの一番上のフレームを選択するための null 値。 null を渡すことは、 defaultContentを呼び出すことと同じです。 |
frame(id: Number |WebElement | null): Promise<void>; |
今後のすべてのコマンドのフォーカスをページ上の別のフレームに変更します。 |
parentFrame(): Promise<void>; |
今後のすべてのコマンドのフォーカスを、現在選択されているフレームの親フレームに変更します。 ドライバーが既に最上位のブラウズ・コンテキストにフォーカスしている場合、このコマンドは効果がありません。 |
window(nameOrHandle: string): Promise<void>; |
今後のすべてのコマンドのフォーカスを別のウィンドウに切り替えるコマンドをスケジュールします。 ウィンドウは'window.name 属性かハンドル(getWindowHandleで返される)で指定できる。 |
newWindow(typeHint: string): Promise<void>; |
ブラウザウィンドウを作成し、このドライバの今後のコマンドのフォーカスを新しいウィンド ウに切り替える。 typeHint 'window' または 'tab'. 作成されたウィンドウは、要求されたタイプであることは保証されません。 ドライバーが要求されたタイプをサポートしない場合、ドライバーがサポートするタイプに関係なく、新しいブラウザー・ウィンドウが作成されます。 ドライバーが新しいウィンドウにフォーカスを変更すると、返された promise が解決されます。 |
alert(): AlertPromise; |
window.alert() 、 window.confirm() 、および window.prompt() によって開かれたものなど、アクティブなモーダル・ダイアログにフォーカスを変更するコマンドをスケジュールします。 使用可能なオープン・アラートがない場合、返された promise は error.NoSuchAlertError で拒否されます。 |
例
/**
* 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
このブラウザー・テスト API は、スクリーン・ショットを取得するコマンドをスケジュールします。 ドライバーは、以下の要素のスクリーン・ショットを優先順に返そうとします。
- ページ全体
- 現行ウィンドウ
- 現在のフレームの表示部分
- ブラウザーを含む表示全体
使用法
$browser.takeScreenshot(): Promise<string>;
パラメーター
パラメーター | タイプ | 説明 |
---|---|---|
RETURN |
Promise<string> |
base-64 でエンコードされた PNG としてスクリーン・ショットを使用して解決される promise。 |
待ち
このブラウザー・テスト API は、条件が「真」の値に評価されるのを待機します。 条件は、条件によって、カスタム関数として、または任意の promise 型の thenable として指定できます。
条件または関数の場合、待機は、真の値を返すまで条件を繰り返し評価します。 API が条件を評価している間にエラーが発生した場合、エラーの伝搬が許可されます。 条件が promise を返すと、ポーリング・ループはそれが解決されるまで待機し、解決された値を使用して条件が満たされているかどうかを確認します。 保証の解決時間は、待機がタイムアウトになったかどうかを確認するために常に考慮されます。
指定された条件がWebElementCondition,ある場合、wait はその条件を満たす要素を解決するWebElementPromiseを返します。
使用法
$browser.wait(
condition: WebElementCondition,
opt_timeout?: number,
opt_message?: string): WebElementPromise;
パラメーター
パラメーター | タイプ | 説明 |
---|---|---|
RETURN |
Promise<string> |
条件関数によって返される、または条件がタイムアウトになった場合に拒否される最初の真の値で解決される promise。 入力条件がWebElementCondition,のインスタンスの場合、返される値はWebElementPromise です。 |
condition |
IThenable<(T |null)> または Condition<(T |null)> または function(WebDriver): (T |null) |
待機する条件。promise として定義されるか、条件オブジェクトとして定義されるか、条件として評価する関数として定義されます。 |
opt_timeout |
number |
条件が true になるのを待機する期間 (ミリ秒)。 |
opt_message |
string またはfunction |
待機がタイムアウトになった場合に使用するオプションのメッセージ。 |
例
例 1: エレメントがページに表示されるのを最大 10 秒待機するには、以下の例に示すようにコマンドを使用します。
async function example() {
let button = await $browser.wait(
$driver.until.elementLocated($driver.By.id("foo")),
10000
);
await button.click();
}
例 2: エレメントを待機してクリックするには、以下の例に示すようにコマンドを使用します。
await $browser.wait(until.elementLocated(by), timeout);
const element = await $browser.findElement(by, timeout);
await $browser.wait(until.elementIsVisible(element), timeout, `${by} not visible`);
await $browser.wait(until.elementIsEnabled(element), timeout, `${by} not enabled`);
await element.click();
waitForAndFindElement
このブラウザー・テスト API は、ページ上のエレメントを待機して検出し、そのエレメントが表示されるのを待機します。 見つからない場合、シンセティック・モニターはエラーを返します。 タイムアウト値はオプションです。 これは、要素を検出するタスクと、その可視性を待機するタスクの両方に個別に適用されます。 したがって、最悪のシナリオでは、このメソッドは、指定されたタイムアウト値の 2 倍まで時間がかかる可能性があります。 デフォルトのタイムアウト値は 1000 ミリ秒 (1 秒) です。
パラメーターで指定されたロケーターを持つエレメントが検出され、そのエレメントが可視になった場合、または指定された timeout
内で指定された条件が満たされなかった場合、 WebElementPromise
が戻されます。
使用法
$browser.waitForAndFindElement(locator: Locator, timeout?: number) : WebElementPromise;
この関数は以下のようになります。
const element = await $browser.wait(until.elementLocated(locator), timeout);
await $browser.wait(until.elementIsVisible(element), timeout);
return await $browser.findElement(locator);
パラメーター
パラメーター | タイプ | 説明 |
---|---|---|
RETURN |
WebElementPromise |
見つかったエレメントに対してコマンドを発行するために使用できる WebElement 。 エレメントが見つからない場合、エレメントは無効になり、スケジュールされているすべてのコマンドが停止します。 |
locator |
by.By | function |
使用するロケーター。 |
timeout |
number |
オプション: 待機する時間の長さ (ミリ秒)。 |
例
$browser.waitForAndFindElement($driver.By.id("username"), 10000);
waitForPendingRequests
この関数は、以前のバージョンとの互換性を確保するためのものです。
使用法
$browser.waitForPendingRequests(timeout?: number): Promise<void>;
この関数は、以下のようになります。
let script = "return document.readyState === 'complete'";
await $browser.wait(() => {
return $browser.executeScript(script);
}, timeout);
パラメーター
パラメーター | タイプ | 説明 |
---|---|---|
RETURN |
Promise<void> |
文書とすべての副次リソースのロードが終了したときに解決される promise。 |
timeout |
number |
待機する時間の長さ (ミリ秒)。 |