API リファレンス

ブラウザー・テスト API の参照情報を表示できます。

アクション

このブラウザテストの API 関数は、 WebDriver を使用して新しいアクションシーケンスを作成します。 コード内で Actions.perform () 関数を呼び出すまで、シーケンスは実行されません。

例 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() `メソッドをサポートしており、2021年に Selenium によってこのPRで``メソッドが削除されたため $browser.actions().move() 、代わりに``メソッドを実装しています。

例 3: 鍵を送信するには、以下のコードを実行します。

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

addHeader

このブラウザテスト用 API は、 HTTP へのリクエストのヘッダーを変更します。

パラメーター

パラメーター タイプ 説明
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 へのリクエストのヘッダーを変更します。

パラメーター

パラメーター タイプ 説明
RETURN Promise<void> 戻り値は promise です。
headers { [key: string]: string } HTTPヘッダー

addHostnamesToDenylist

このブラウザテストツール API は、ホスト名をブロックリストに追加します。

使用法

$browser.addHostnamesToDenylist(hostnameArr: string[]): Promise<void>
注:Instana では、 URL のフィルタリング機能を提供していますが、以前 addHostnamesToDenylist のバージョンとの互換性を確保するため、この addHostnamesToBlacklist 機能は削除されていません。
$browser.addHostnamesToBlacklist(hostnameArr: string[]): Promise<void>

パラメーター

パラメーター タイプ 説明
RETURN Promise<void> 戻り値は promise です。
hostnameArr string[] 突き合わせるホスト名、およびワイルドカードをサポートするホスト名

addHostnamesToAllowlist

このブラウザテストツール API は、ホスト名を許可リストに追加します。

使用法

$browser.addHostnamesToAllowlist(hostnameArr: string[]): Promise<void>
注:Instana では、 URLaddHostnamesToAllowlist のフィルタリングを行う関数が提供されていますが、以前のバージョンとの互換性を確保するため、この addHostnamesToWhitelist 関数は削除されていません。
$browser.addHostnamesToWhitelist(hostnameArr: string[]): Promise<void>

パラメーター

パラメーター タイプ 説明
RETURN Promise<void> 戻り値は promise です。
hostnameArr string[] 突き合わせるホスト名。ワイルドカードをサポートします。

addHostnameToDenylist

このブラウザのテスト API は、ホスト名をブロックリストに追加します。

使用法

$browser.addHostnameToDenylist(hostname: string): Promise<void>
注:Instana では、 URLaddHostnameToDenylist のフィルタリングを行う関数が提供されていますが、以前のバージョンとの互換性を確保するため、この addHostnameToBlacklist 関数は削除されていません。
$browser.addHostnameToBlacklist(hostname: string): Promise<void>

パラメーター

パラメーター タイプ 説明
RETURN Promise<void> 戻り値は promise です。
hostname string 突き合わせるホスト名、およびワイルドカードをサポートするホスト名

addHostnameToAllowlist

このブラウザテスト( API )は、ホスト名を許可リストに追加します。

使用法

$browser.addHostnameToAllowlist(hostname: string): Promise<void>
注:Instana では、 URL のフィルタリング機能を提供していますが、以前 addHostnameToAllowlist のバージョンとの互換性を確保するため、この addHostnameToWhitelist 機能は削除されていません。
$browser.addHostnameToWhitelist(hostname: string): Promise<void>

パラメーター

パラメーター タイプ 説明
RETURN Promise<void> 戻り値は promise です。
hostname string 突き合わせるホスト名。ワイルドカードをサポートします。

deleteHeader

このブラウザのテスト API は、ユーザー定義のヘッダーを削除します。

パラメーター

パラメーター タイプ 説明
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 )は、ユーザー定義のヘッダーを削除します。

パラメーター

パラメーター タイプ 説明
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 では、 URLdeleteHostnameFromDenylist のフィルタリングを行う関数が提供されていますが、以前のバージョンとの互換性を確保するため、この deleteHostnameFromBlacklist 関数は削除されていません。
$browser.deleteHostnameFromBlacklist(hostname: string): Promise<void>;

パラメーター

パラメーター タイプ 説明
RETURN Promise<void> 戻り値は promise です。
hostname string 突き合わせるホスト名。ワイルドカードをサポートします。

deleteHostnameFromAllowlist

このブラウザー・テスト API は、許可リストからホスト名を削除します。

使用法

$browser.deleteHostnameFromAllowlist(hostname: string): Promise<void>;
注: このコードは、 API に` deleteHostnameFromAllowlist function`を追加しますが、以前のバージョンとの互換性を確保するため、` deleteHostnameFromWhitelist function`を削除することはありません。
$browser.deleteHostnameFromWhitelist(hostname: string): Promise<void>;

パラメーター

パラメーター タイプ 説明
RETURN Promise<void> 戻り値は promise です。
hostname string 突き合わせるホスト名。ワイルドカードをサポートします。

deleteHostnamesFromDenylist

このブラウザテスト API は、拒否リストからホスト名を削除します。

使用法

$browser.deleteHostnamesFromDenylist(hostnameArr: string[]): Promise<void>
注:Instana では、 URLdeleteHostnamesFromDenylist のフィルタリングを行う関数が提供されていますが、以前のバージョンとの互換性を確保するため、この deleteHostnamesFromBlacklist 関数は削除されていません。
$browser.deleteHostnamesFromBlacklist(hostnameArr: string[]): Promise<void>

パラメーター

パラメーター タイプ 説明
RETURN Promise<void> 戻り値は promise です。
hostnameArr string[] 突き合わせるホスト名。ワイルドカードをサポートします。

deleteHostnamesFromAllowlist

このブラウザテスト( API )は、許可リストからホスト名を削除します。

使用法

$browser.deleteHostnamesFromAllowlist(hostnameArr: string[]): Promise<void>
注:Instana では、 URLdeleteHostnamesFromAllowlist のフィルタリングを行う関数が提供されていますが、以前のバージョンとの互換性を確保するため、この deleteHostnamesFromWhitelist 関数は削除されていません。
$browser.deleteHostnamesFromWhitelist(hostnameArr: string[]): Promise<void>

パラメーター

パラメーター タイプ 説明
RETURN Promise<void> 戻り値は promise です。
hostnameArr string[] 突き合わせるホスト名。ワイルドカードをサポートします。

ドル・ドル

$$ コマンドは、ページ上の複数のエレメントをフェッチするために findElements コマンドを呼び出すショートカットです。 このコマンドは、エレメント結果を含む配列を返します。 これらの結果には、アクション・コマンドを呼び出すための拡張プロトタイプがあります。

$ または $$ を一緒にチェーニングして、DOM ツリーをナビゲートできます。

特定のエレメントを選択する方法について詳しくは、 CSS セレクターを参照してください。

パラメーター

名前 タイプ 説明
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 セレクターを参照してください。

パラメーター

名前 タイプ 説明
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 です。

executeAsyncScript

このブラウザテスト API は、現在選択されているフレームまたはウィンドウのコンテキスト内で、非同期の JavaScript のスニペットを実行します。 スクリプト・フラグメントは、匿名関数の本体として実行されます。 スクリプトが関数オブジェクトとして提供されている場合、その関数は、ターゲット・ウィンドウに注入するためにストリングに変換されます。

スクリプトに加えて引数を指定すると、その引数はスクリプト引数として組み込まれ、 arguments オブジェクトを使用して参照できます。 引数には、ブール値、数値、ストリング、または WebElementを指定できます。 配列およびオブジェクトは、各項目が記述されたタイプに従っている場合は、スクリプト引数として使用することもできます。

`executeScript ` を使用して同期的な ` JavaScript ` を実行する場合とは異なり、この関数で実行されるスクリプトは、指定されたコールバックを開始することで、明示的に処理が完了したことを通知する必要があります。 このコールバックは、常に最後の引数として実行される関数に注入されるため、 arguments[arguments.length - 1]で参照される可能性があります。 スクリプトのコールバック関数の最初の引数に対してこの関数の戻り値を解決するには、以下のステップを実行します。

  • HTML 要素の場合、値は WebElementに解決されます。
  • NULL および未定義の戻り値は NULL に解決されます。
  • ブール値、数値、およびストリングはそのまま解決されます。
  • 関数は、ストリング表現に解決されます。
  • 配列およびオブジェクトの場合、各メンバー項目は、記述された規則に従って変換されます。

パラメーター

パラメーター タイプ 説明
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 に解決されます。
  • ブール値、数値、およびストリングはそのまま解決されます。
  • 関数は、ストリング表現に解決されます。
  • 配列およびオブジェクトの場合、各メンバー項目は、記述された規則に従って変換されます。

パラメーター

パラメーター タイプ 説明
RETURN Promise.<T> スクリプトの戻り値を使用して解決される promise。
script string, Function 実行するスクリプト。
...args * スクリプトに渡される引数です。

findElement

このブラウザテストツール( API )は、ページ上の要素を特定します。 エレメントが見つからない場合、ドライバーは error.NoSuchElementErrorを返します。

パラメーター

パラメーター タイプ 説明
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 で解決されるPromiseを返すカスタムロケーター関数を指定することもできます。 返されたPromiseが 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

generateTOTPToken

このブラウザ用テストツール API は、TOTPキーから時間ベースのワンタイムパスワード(TOTP)トークンを生成します。 この API を使用して、二要素認証でログインできます。

パラメーター

パラメーター タイプ 説明
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"
}

getAllWindowHandles

このブラウザテスト API は、現在利用可能なウィンドウハンドルのリストを取得するコマンドを実行するようにスケジュールされています。

パラメーター

パラメーター タイプ 説明
RETURN Promise<string[]> ウィンドウ・ハンドルの配列を使用して解決される promise。

getHeaders

このブラウザテストツール API は、ユーザーがカスタマイズしたヘッダーを受け付けます。

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 サーバーから送信される未加工の応答と同じ方法でソースがフォーマットまたはエスケープされることを想定しないでください。

パラメーター

パラメーター タイプ 説明
RETURN Promise<string> 現在のページ・ソースで解決される promise。

getProxy

このブラウザのテストページ API は、現在のプロキシ設定を取得します。

使用法

$browser.getProxy(): FFProxyConfig | CProxyConfig;

この API は、オブジェクト $network を介して呼び出すこともできます:

$network.getProxy(): FFProxyConfig | CProxyConfig;

プロキシー構成

/**
 * 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,
  },
};

getWindowHandle

このブラウザテスト API は、現在のウィンドウハンドルを取得するコマンドをスケジュールします。

パラメーター

パラメーター タイプ 説明
RETURN Promise<string> 現行ウィンドウ・ハンドルを使用して解決される promise。

管理

このブラウザテスト API は、このインスタンスのオプションインターフェースを取得します。

オプション

これらのオプションは、ブラウザーおよびドライバーの状態を管理するためのメソッドを提供します。

タイプ 説明
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 ワイヤプロトコルで規定されているとおり、 JSON オブジェクトとして返されます。
logs(): Logs; ドライバー・ログを管理するためのインターフェースを提供します。
getTimeouts(): Promise<ITimeouts>; 現在の timeoutsを取得します。
setTimeouts(timeouts: ITimeouts): Promise<void>; 現在の timeoutsを設定します。
window(): Window; 現在の ウィンドウを管理するためのインターフェースを提供します。

IWebDriverCookie

パラメーター タイプ 説明
name string Cookie の名前です。
value string Cookie の値。
path string Cookie パス。 Cookie が追加されると、デフォルトで「/」に設定されます。
domain string Cookie が表示されるドメイン。 クッキーが追加されると、デフォルトでは現在のブラウジングコンテキストのドキュメントの URL が設定されます。
secure boolean このパラメーターは、Cookie がセキュア Cookie であるかどうかを示します。 デフォルト値は falseです。これは、Cookie がセキュア Cookie ではないことを意味します。
httpOnly boolean このパラメータは、そのクッキーが HTTP 専用のクッキーであるかどうかを示します。 デフォルト値は です false。これは、このクッキーが HTTP 専用ではないことを意味します。
expiry number ブラウザーから Cookie を取得する場合、有効期限は常にエポック以降の秒数で返されます。

タイムアウト

パラメーター タイプ 説明
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>; 現在の最上位ウィンドウのサイズと位置を設定します。 xy を省略してサイズのみを更新することも、 widthheight のオプションを省略して位置のみを更新することもできます。
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 へのリクエストに対する認証設定を変更します。

パラメーター

パラメーター タイプ 説明
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 文字列は、ノードの url.parse ( urlString ) メソッドで定義されている形式でなければなりません。 例えば、 http://proxy_host:8888 または https://user:pass@proxy_host:8888 です。
noProxy string オプション: すべてのプロキシーをバイパスするホストの、コンマ区切りのリスト。

setProxyAdvanced

このブラウザテストツール API は、Chrome または Firefox 拡張機能 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 リクエストのプロキシ認証設定を変更します。

パラメーター

パラメーター タイプ 説明
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.js の 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 文字列は、ノードの 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)スクリプトを使用してプロキシサーバーを設定します。

パラメーター

パラメーター タイプ 説明
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 では、ドライバを特定の時間だけスリープ状態にするコマンドがスケジュールされています。

パラメーター

パラメーター タイプ 説明
RETURN Promise<void> スリープ終了時に解決される約束。
ms number スリープにかかる時間 (ミリ秒)。

switchTo

このブラウザテスト API には、ドライバーのフォーカスを別のフレームやウィンドウに変更するためのインターフェースが用意されています。

TargetLocator

ドライバーのフォーカスを別のフレームまたはウィンドウに変更するためのインターフェース。

インスタンス・メソッド

タイプ 説明
activeElement(): WebElementPromise; 現在の文書の document.activeElement エレメント、または activeElement が使用できない場合は document.body エレメントを取得するコマンドをスケジュールします。
defaultContent(): Promise<void>; 今後のすべてのコマンドのフォーカスをページの最初のフレームに切り替えるコマンドをスケジュールします。 ターゲットフレームは、以下のいずれかの値として指定できます。 - ` window.frames ` 内のインデックス(0 から始まる)を指定する数値。 - ` WebElement ` への参照。これは、`<frame>` または `<iframe iframe > frame ` DOM 要素に対応します。 - ページ上の最上位のフレームを選択するための `top` null 値。 passing は、 nulldefaultContent を呼び出すのと同じです。
frame(id: Number |WebElement| null): Promise<void>; 今後のすべてのコマンドのフォーカスをページ上の別のフレームに変更します。
parentFrame(): Promise<void>; 今後のすべてのコマンドのフォーカスを、現在選択されているフレームの親フレームに変更します。 ドライバーが既に最上位のブラウズ・コンテキストにフォーカスしている場合、このコマンドは効果がありません。
window(nameOrHandle: string): Promise<void>; 今後のすべてのコマンドのフォーカスを別のウィンドウに切り替えるコマンドをスケジュールします。 Windows は、その window.name 属性またはハンドル( getWindowHandle によって返されるもの)で指定できます。
newWindow(typeHint: string): Promise<void>; ブラウザウィンドウを作成し、このドライバの今後のコマンドのフォーカスを新しいウィンドウに切り替えます。 typeHint 「ウィンドウ」または「タブ」。 作成されたウィンドウは、要求されたタイプであることは保証されません。 ドライバが要求されたタイプに対応していない場合、ドライバが対応している任意のタイプの新しいブラウザウィンドウが開かれます。 ドライバーが新しいウィンドウにフォーカスを移すと、返されたプロミスが決済されます。
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 では、スクリーンショットを撮影するコマンドがスケジュールされています。 ドライバーは、以下の要素のスクリーン・ショットを優先順に返そうとします。

  1. ページ全体
  2. 現行ウィンドウ
  3. 現在のフレームの表示部分
  4. ブラウザーを含む表示全体

パラメーター

パラメーター タイプ 説明
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 オプション: 待機する時間の長さ (ミリ秒)。

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 待機する時間の長さ (ミリ秒)。