[comment]: # (tags: browser)

[comment]: # ({b2b7cc8c-5b27f125})
# 2 ブラウザアイテムのJavaScriptオブジェクト

[comment]: # ({/b2b7cc8c-5b27f125})

[comment]: # ({78a26b1c-8dceeea0})
#### 概要

このセクションでは、[ブラウザアイテム](/manual/config/items/itemtypes/browser) スクリプトで使用するために、Duktape で実装された JavaScript 言語に対する Zabbix の追加機能について説明します。  
これらの追加機能は、[追加の JavaScript オブジェクト](/manual/config/items/preprocessing/javascript/javascript_objects) ページで説明されている JavaScript オブジェクトを補完するものです。

[comment]: # ({/78a26b1c-8dceeea0})

[comment]: # ({4c174987-63b1c0c6})
#### Browser

`Browser` オブジェクトはWebDriverセッションを管理し、作成時にセッションを初期化し、破棄時にセッションを終了します。
1つのスクリプトで最大4つの `Browser` オブジェクトをサポートできます。

`Browser` オブジェクトを構築するには、`new Browser(options)` 構文を使用します。
`options`（*JSON object*）パラメータはブラウザオプションを指定し、通常はWebDriver optionsメソッドの結果です（例: `Browser.chromeOptions()`）。

`Browser` オブジェクトでは、以下のメソッドがサポートされています。

|Method|Description|
|---|-------|
|`navigate(url)`|指定したURLに移動します。<br><br>パラメータ:<br>`url` - (string) 移動先のURL。|
|`getUrl()`|開いているページのURL文字列を返します。|
|`getPageSource()`|開いているページのページソース文字列を返します。|
|`findElement(strategy, selector)`|開いているページ内の1つの要素を持つ [`Element`](#element) オブジェクトを返します（`strategy` と `selector` に一致する要素がない場合は `null` を返します）。<br><br>パラメータ:<br>`strategy` - (string, css selector/link text/partial link text/tag name/xpath) [Location strategy](https://www.selenium.dev/documentation/webdriver/elements/locators/);<br>`selector` - (string) 指定したロケーション戦略を使用する要素セレクター。|
|`findElements(strategy, target)`|開いているページ内の複数の要素を持つ [`Element`](#element) オブジェクトの配列を返します（ロケーション戦略とtargetに一致する要素がない場合は空の配列を返します）。<br><br>パラメータ:<br>`strategy` - (string, css selector/link text/partial link text/tag name/xpath) [Location strategy](https://www.selenium.dev/documentation/webdriver/elements/locators/);<br>`target` - (string) 指定したロケーション戦略を使用する要素セレクター。|
|`getCookies()`|[`Cookie`](#cookie) オブジェクトの配列を返します。|
|`addCookie(cookie)`|Cookieを設定します。<br><br>パラメータ:<br>`cookie` - ([`Cookie`](#cookie) object) 設定するCookie。|
|`getScreenshot()`|ブラウザのビューポートの画像を表すbase64エンコード文字列を返します。|
|`setScreenSize(x,y)`|ブラウザのビューポートサイズを設定します。<br><br>パラメータ:<br>`x` - (string) ピクセル単位の幅;<br>`y` - (string) ピクセル単位の高さ。|
|`setScriptTimeout(timeout)`|スクリプト読み込みタイムアウトを設定します。<br><br>パラメータ:<br>`timeout` - (integer) ミリ秒単位のタイムアウト値。|
|`setSessionTimeout(timeout)`|セッション（ページ読み込み）タイムアウトを設定します。<br><br>パラメータ:<br>`timeout` - (integer) ミリ秒単位のタイムアウト値。|
|`setElementWaitTimeout(timeout)`|要素ロケーション戦略の（暗黙的）タイムアウトを設定します。<br><br>パラメータ:<br>`timeout` - (integer) ミリ秒単位のタイムアウト値。|
|`collectPerfEntries(mark)`|`getResult()` メソッドで取得するパフォーマンスエントリを収集します。<br><br>パラメータ:<br>`mark` - (string, optional) パフォーマンススナップショットのマーク。|
|`getRawPerfEntries()`|パフォーマンスエントリオブジェクトの配列を返します。|
|`getResult()`|ブラウザセッションの統計情報（エラー情報、パフォーマンススナップショットなど）を含む [`Result`](#result) オブジェクトを返します。|
|`getError()`|ブラウザエラーを含む `BrowserError` オブジェクトを返します（ブラウザエラーがない場合は `null` を返します）。|
|`setError(message)`|[`Result`](#result) オブジェクトに含めるカスタムエラーメッセージを設定します。<br><br>パラメータ:<br>`message` - (string) エラーメッセージ。|
|`discardError()`|[`Result`](#result) オブジェクトで返されるエラーを破棄します。|
|`getAlert()`|ブラウザアラートを含む [`Alert`](#alert) オブジェクトを返します（ブラウザアラートがない場合は `null` を返します）。|
|`chromeOptions()`|事前定義されたChromeブラウザオプションを含む `chromeOptions` オブジェクトを返します。|
|`firefoxOptions()`|事前定義されたFirefoxブラウザオプションを含む `firefoxOptions` オブジェクトを返します。|
|`safariOptions()`|事前定義されたSafariブラウザオプションを含む `safariOptions` オブジェクトを返します。|
|`edgeOptions()`|事前定義されたEdgeブラウザオプションを含む `edgeOptions` オブジェクトを返します。|
|`switchFrame(target)`|指定したフレームに切り替えます。<br><br>パラメータ:<br>`target` - (browser element or integer, optional) 対象フレーム。要素でフレームを選択するには、その要素を渡します。インデックスでフレームを選択するには、その番号を渡します。空のままにすると、トップレベルのブラウジングコンテキストに切り替わります。|

すべてのBrowserメソッドは、以下のエラーをスローする可能性があります。

-   `BrowserError` - `Error` オブジェクトから派生したもので、`Browser` コンストラクタが失敗した場合にスローされます。追加の `browser` プロパティを含み、この `BrowserError` をスローした `Browser` オブジェクトを保持します。
-   `WebdriverError` - `BrowserError` から派生したもので、`BrowserError` オブジェクトと同じプロパティを含みます。これらは、WebDriverレスポンス内のエラーに応答して生成されたエラーであることを示します。

[comment]: # ({/4c174987-63b1c0c6})

[comment]: # ({604d89e0-d4cb4fbc})
#### Element

`Element` オブジェクトは、[`Browser`](#browser) オブジェクトの `findElement()`/`findElements()` メソッドによって返され、直接構築することはできません。

`Element` オブジェクトはWebページ内の要素を表し、それを操作するためのメソッドを提供します。

`Element` オブジェクトでは、以下のメソッドがサポートされています。

|Method|Description|
|--|--------|
|`getAttribute(name)`|要素の属性の属性値文字列を返します（指定した属性が見つからない場合は `null` を返します）。<br><br>パラメータ:<br>`name` - (string) 属性名。|
|`getProperty(name)`|要素のプロパティのプロパティ値文字列を返します（指定したプロパティが見つからない場合は `null` を返します）。<br><br>パラメータ:<br>`name` - (string) プロパティ名。|
|`getText()`|要素のテキストの文字列値を返します。|
|`click()`|要素をクリックします。|
|`clear()`|編集可能な要素の内容をクリアします。|
|`sendKeys(keys)`|キーを送信します。<br><br>パラメータ:<br>`keys` - (string) 送信するキー。|

[comment]: # ({/604d89e0-d4cb4fbc})

[comment]: # ({d06955ba-8f51d1aa})
#### Cookie

`Cookie` オブジェクトは、[`Browser`](#browser) オブジェクトの `getCookies()` メソッドによって返され、`addCookie()` メソッドに渡されます。

`Cookie` オブジェクトにはメソッドはありませんが、以下のプロパティを含めることができます。

|プロパティ|Type|説明|
|--|--|------|
|name|string|Cookie の名前。|
|value|string|Cookie の値。|
|path|string|Cookie が有効なパス。<br>Cookie の追加時に省略した場合、デフォルトは `"/"` です。|
|domain|string|Cookie を参照できるドメイン。<br>Cookie の追加時に省略した場合、デフォルトはセッションの現在の閲覧コンテキストのアクティブなドキュメントの URL ドメインです。|
|secure|boolean|Cookie がセキュアであるかどうかを示します。<br>Cookie の追加時に省略した場合、デフォルトは `false` です。|
|httpOnly|boolean|Cookie が HTTP 専用であるかどうかを示します。<br>Cookie の追加時に省略した場合、デフォルトは `false` です。|
|expiry|integer|Cookie の有効期限（Unix エポックからの秒数）。Cookie の追加時に省略する場合は、設定してはいけません。|
|sameSite|string|Cookie の `sameSite` 属性で、Cookie をファーストパーティまたは same-site コンテキストに制限するかどうかを制御します。<br>`"Lax"` または `"Strict"` のいずれかを設定できます。<br>Cookie の追加時に省略した場合、デフォルトは `"None"` です。|

[comment]: # ({/d06955ba-8f51d1aa})

[comment]: # ({a5a93a3d-a8d4ccbd})
#### Alert

`Alert` オブジェクトはWebページのアラートを表し、[`Browser`](#browser) オブジェクトの `getAlert()` メソッドによって返され、直接構築することはできません。

`Alert` オブジェクトには、アラートのテキストを含む `text` プロパティがあります（アラートがない場合は `null`）。

`Alert` オブジェクトでは、以下のメソッドがサポートされています。

|Method|Description|
|--|--------|
|`accept()`|アラートを受け入れます。|
|`dismiss()`|アラートを閉じます。|

[comment]: # ({/a5a93a3d-a8d4ccbd})

[comment]: # ({aaeb76e3-54b41590})
#### 結果

`Result` オブジェクトにはセッション統計が含まれ、[`Browser`](#browser) オブジェクトの `getResult()` メソッドによって返されます。

通常、`Result` オブジェクトは文字列化されてスクリプトから返され、その後、前処理によって依存アイテムの値に解析されます。

`Result` オブジェクトにはメソッドはありませんが、以下のプロパティを含めることができます。

|プロパティ|<|<|型|説明|
|-|-|-|-----|---------------------|
|duration|<|<|string|セッション作成から結果取得までのセッション継続時間。|
|error|<|<|object|エラー情報。|
|<|http_status|<|integer|WebDriver によって返された HTTP ステータス（WebDriver エラーがない場合は 0）。|
|^|error_code|<|string|WebDriver によって返されたエラー（WebDriver エラーがない場合は空文字列）。|
|^|message|<|string|WebDriver のエラーメッセージ（WebDriver エラーがない場合は空文字列）。|
|performance_data|<|<|object|パフォーマンス統計。|
|<|summary|<|object|パフォーマンスの概要。|
|^|<|navigation|object|ナビゲーションの概要。|
|^|^|resource|object|リソースの概要。|
|<|details|<|array of objects|ナビゲーションが発生した可能性のある各操作後のパフォーマンス統計。|
|^|<|mark|string|*（任意）* [`collectPerfEntries()`](#browser) メソッドで指定されたパフォーマンススナップショットのマーク。|
|^|^|navigation|object|ナビゲーション統計。|
|^|^|resource|object|このステップのリソース概要。|
|^|^|user|array of objects|mark/measure 型統計の配列。|
|<|marks|<|array of objects|マークされたパフォーマンススナップショットのインデックス。|
|^|<|name|string|パフォーマンススナップショットのマーク名。|
|^|^|index|integer|details 配列内のパフォーマンススナップショットのインデックス。|

[comment]: # ({/aaeb76e3-54b41590})
