• ログイン今すぐ開始

Syntheticスクリプト化ブラウザリファレンス(Chrome 100以降)

Selenium Webdriver 4.1 APIを使用してスクリプト化ブラウザ監視を実行するには、スクリプトの構文が変数$selenium$webDriverを使用していることを確認してください。Selenium Webdriver API 3.6.0にアクセスするには、変数$driver$browserを使用します。$driver$browserは引き続き使用できますが、非推奨の警告が表示され、今後のランタイムリリースから削除される可能性があることを示します。

特に:

  • $selenium selenium-webdriverモジュールからのすべてのエクスポートを提供します(ActionSequenceButtonByWebElementなど)。これは古いランタイムでの$driver使用にマッピングされます。
  • $webDriverselenium-webdriver.WebDriver()の合成モニタリングインスタンスです。WebDriverget()といった主な基本findElement() APIのほか、一部のSyntheticsカスタムAPIを公開します。これは古いランタイムでの$browser使用にマッピングされます。
  • $headers リクエストヘッダーを変更することができます。この機能は、複数の$browser方法で古いランタイムで利用可能でした
  • $urlFilter 許可リストと拒否リストを作成して、リクエストを特定のドメインに制限できます。この機能は、複数の$browser方法で古いランタイムで利用可能でした

旧バージョンのモニターを使用している場合は、モニターバージョン0.5.0および0.6.0のマニュアルまたはモニターバージョン0.4.0以前のマニュアルを参照してください。

モニターのバージョンおよびランタイムの違いについては、「ランタイム環境」をご覧ください。

重要

Selenium WebDriverのPromise Manager/強制フローにより、Promise/非同期機能を手動で管理することなく、一部の機能を順番に実行できるようになりました。これはSelenium WebDriver 4.0では削除されたため、ランタイムでは使用できません。すべての非同期機能およびプロミスは、awaitまたは.thenのプロミスチェーンを使用して管理する必要があります。これにより、スクリプト機能が予期された順序で実行されるようになります。

最上位関数:スクリプトの作成

New Relicは、$webDriverインスタンスから最上位関数を直接呼び出します。これらは、多数の基本的なスクリプト可能なアクションに対応する幅広い機能を提供します。

waitForAndFindElement(locator, timeout)およびwaitForPendingRequests(timeout)メソッドはランタイムから削除されており、$webDriverからは使用できません。下位互換性は利用できますが、非推奨と見なされ、今後のランタイムから削除される可能性があります。次のコードスニペットを使用して、関数を置き換えます。

機能

説明

$webDriver.actions()

このドライバを使用して、新しいアクションシーケンスを作成します。使用可能なアクションのリストについては、「ActionSequence」をご覧ください。

戻り値:void

$headers.add(headerKey: string, headerValue: string)

headerValueのヘッダーheaderKeyをランタイムに追加します。

戻り値:void

$headers.addMultiple(headers: {key:value...})

ランタイムに複数のヘッダーを追加します。

戻り値:void

$headers.get(headerKey: string)

現在設定されているヘッダのマップを返します。

戻り値:promise

$headers.getAll()

現在設定されているヘッダのマップを返します。

戻り値:map

$headers.getKeys()

現在設定されているヘッダーキーの配列を返します。

戻り値:配列

$headers.has(headerKey: string)

このヘッダーが存在するかどうかを示すブール値を返します。

戻り値:ブール値

$headers.remove(header: string)

特定のヘッダをランタイムから削除します。

戻り値:void

$headers.removeMmultiple(headers: {key:value...})

引数のすべてのヘッダをランタイムから削除します。

戻り値:void

$headers.clear()

すべてのヘッダーをランタイムから削除します。

戻り値:void

$urlFilter.addToDenyList(hostnameArr: [string])

引数の配列のすべてのホスト名を拒否リストに追加します。wildcardsの使用が許可されます。

戻り値:promise

$urlFilter.addToAllowList(hostnameArr: [string])

引数の配列のすべてのホスト名を許可リストに追加します。wildcardsの使用が許可されます。

戻り値:promise

$urlFilter.removeFromDenyList(hostnameArr: [string])

引数のすべてのホスト名を拒否リストから削除します。

戻り値:promise

$urlFilter.removeFromAllowList(hostnameArr: [string])

引数のすべてのホスト名を許可リストから削除します。

戻り値:promise

$webDriver.executeAsyncScript(script: ?, var_args: ?)

現在選択されているフレームまたはウィンドウのコンテキストで、非同期JavaScriptを実行するコマンドをスケジュールします。

戻り値:promise

$webDriver.executeScript(script: ?, var_args: ?)

現在選択されているフレームまたはウィンドウのコンテキストで、JavaScriptを実行するコマンドをスケジュールします。

戻り値:promise

$webDriver.findElement(locator: $selenium.Locator)

ページ上の要素を検索するコマンドをスケジュールします。見つからなかった場合、Syntheticsモニタリングはエラーを返します。

戻り値:WebElementPromise

$webDriver.findElements(locator: $selenium.Locator)

ページ上の複数の要素を検索するコマンドをスケジュールします。

戻り値:promise

$webDriver.get(url: string)

Syntheticsブラウザでウェブページをロードします。

戻り値:promise

$webDriver.getAllWindowHandles()

使用可能なウィンドウハンドルの最新リストを取得するコマンドをスケジュールします。

戻り値:promise

$webDriver.getCapabilities()

インスタンスの機能を使って解決するpromise。

戻り値:promise

$webDriver.getCurrentUrl()

現在のページのURLを取得するコマンドをスケジュールします。

戻り値:promise

$webDriver.getPageSource()

現在のページソースを取得するコマンドをスケジュールします。返されるページソースは、基盤となるDOMの表現です。Webサーバーから応答が返される場合と同様に書式化またはエスケープされることを期待しないでください。

戻り値:promise

$webDriver.getSession()

このクライアントのセッションのpromise。

戻り値:promise

$webDriver.getTitle()

現在のページのタイトルを取得するコマンドをスケジュールします。

戻り値:promise

$webDriver.getWindowHandle()

現在のウィンドウハンドルを取得するコマンドをスケジュールします。

戻り値:promise

$webDriver.manage()

このインスタンスのオプションのインタフェース。クッキー、タイムアウト、その他のウィンドウオプションを管理できます。

戻り値:void

$webDriver.navigate()

このインスタンスのナビゲーションインタフェース(ブラウザ関数の履歴)

戻り値:void

$webDriver.sleep()

指定された期間、ドライバをスリープ状態にするコマンドをスケジュールします。

戻り値:promise

$webDriver.switchTo()

このインスタンスのターゲットロケーターのインタフェース。

戻り値:void

$webDriver.takeScreenshot()

スクリーンショットを撮るコマンドをスケジュールします。

戻り値:promise

$webDriver.wait(fn: $driver.Condition, timeout: number, opt_message: string)

ユーザー提供の関数の定義どおりに、条件が保持されるまで待機するコマンドをスケジュールします。

戻り値:WebElement

$browser.waitForPendingRequests(timeout: number)

開始されたリクエストがタイムアウトまでに戻るまでスクリプトを待機させます。ノンブロッキングリソースの追跡に役立ちます。

戻り値:promise

拒否リスト:ワイルドカードの使用

ドメインをブラウザインスタンスの拒否リストに追加したい場合、ブロックされるURLのURL構文にワイルドカードが一致しなければなりません。

包括的な.com拒否リストには以下の関数が含まれなければなりません。

機能

ブロッキングアクション

$urlFilter.addToDenyList(['*.com']);

a.com

$urlFilter.addToDenyList([*.*.com']);

a.b.com

$urlFilter.addToDenyList([*.*.*.com']);

a.b.c.com

$urlFilter.addToDenyList([www.*.com']);

www.a.com

$urlFilter.addToDenyList([www.*.*.com']);

www.a.b.com

$urlFilter.addToDenyList(['www.*.*.*.com']);

www.a.b.c.com

オプション:ブラウザインスタンスを管理する

以下の関数は、クッキー、タイムアウト、ウィンドウサイズなどのブラウザインスタンスのオプションを管理します。$webDriver.manage()関数を使用してこれらのオプションにアクセスします。

機能

説明

$webDriver.manage().addCookie(spec: object)

クッキーを追加するコマンドをスケジュールします。

spec は、ブラウザクッキーを記述するレコードオブジェクトです。詳しくは、Seleniumのドキュメントを参照してください。

戻り値:promise

$webDriver.manage().deleteAllCookies()

現在のページに表示されているすべてのクッキーを削除するコマンドをスケジュールします。

戻り値:promise

$webDriver.manage().deleteCookie(name: string)

指定された名前のクッキーを削除するコマンドをスケジュールします。指定された名前のクッキーが現在のページに表示されていない場合、このコマンドはno-opです。

戻り値:promise

$webDriver.manage().getCookie(name: string)

指定された名前のクッキーを取得するコマンドをスケジュールします。そのようなクッキーがない場合は、nullを返します。クッキーは、WebDriverワイヤプロトコルによって記述されているように、JSONオブジェクトとして返されます。

戻り値:promise

$webDriver.manage().getCookies()

現在のページに表示されているすべてのクッキーを取得するコマンドをスケジュールします。New Relic Syntheticcsは、WebDriverワイヤプロトコルによって記述されているように、各クッキーをJSONオブジェクトとして返します。

戻り値:promise

$webDriver.manage().getTimeouts()

現在のスクリプト、pageLoad、および暗黙的タイムアウトを返します。

戻り値:promise

$webDriver.manage().setTimeouts({implicit: numberMS})

要素を検索する際に、その時点でその要素が存在しない場合、ドライバが待機する必要がある時間を指定します。待機タイムアウトを0に設定すると、暗黙的な待機が無効になります。

特にXPathのような時間を要するロケーション戦略では、テストランタイムが長くなるため、待機タイムアウトを増加する際は注意してください。デフォルトは10秒です。

戻り値:promise

$webDriver.manage().setTimeouts({pageLoad: numberMS})

エラーを返す前に、ページロードが完了するまで待機する時間を設定します。タイムアウト値が負の場合、ページロードは最大180秒継続する可能性があります。デフォルトは60秒です。

戻り値:promise

$webDriver.manage().setTimeouts({script: numberMS})

エラーを返す前に、非同期スクリプトの実行が完了するまで待機する時間をミリ秒単位で設定します。デフォルトは30秒です。

戻り値:promise

$webDriver.manage().window().getRect()

画面の左上隅とウィンドウのサイズ(幅と高さ)を基準にしたウィンドウの現在の位置(xとy)を取得します。

戻り値:promise

$webDriver.manage().window().maximize()

現在のウィンドウを最大化します。

戻り値:promise

$webDriver.manage().window().setRect({x: number|undefined, y: number|undefined, width: number|undefined, height: number|undefined})

画面の左上隅とウィンドウのサイズ(幅と高さ)を基準にしたウィンドウの現在の位置(xとy)を設定します。

戻り値:promise

ロケーター: ページ要素の検索

ロケーターは、locatorインスタンスを作成するためのファクトリ関数の集合です。ロケーターは、$webDriver.findElementなどの関数に渡すことができるDOM要素を検索します。$selenium.Byからそれらを呼び出します。

機能

説明

$selenium.By.className(className: string)

特定のクラス名を持つ要素を特定します。返されるロケーターは、CSSセレクタ.clazzで要素を検索した場合と同様です。

戻り値:ロケーター

$selenium.By.css(cssName: string)

CSSセレクタを使って、要素を特定します。

戻り値:ロケーター

$selenium.By.id(id: string)

IDで要素を特定します。

戻り値:ロケーター

$selenium.By.linkText(linkText: string)

表示されているテキストが指定された文字列と一致するリンク要素を特定します。

戻り値:ロケーター

$selenium.By.js(js: string)

JavaScript式を評価して要素を特定します。

戻り値:ロケーター

$selenium.By.name(name: string)

name属性に指定された値が含まれている要素を特定します。

戻り値:ロケーター

$selenium.By.partialLinkText(partialLinkText: string)

表示されているgetTextに指定された部分文字列が含まれているリンク要素を特定します。

戻り値:ロケーター

$selenium.By.tagName(tagName: string)

指定されたタグ名を持つ要素を特定します。返されるロケーターは、getElementsByTagName DOM関数を使用した場合と同様です。

戻り値:ロケーター

$selenium.By.xpath(xpath: string)

XPathセレクタに一致する要素を特定します。

戻り値:ロケーター

WebElement:ページ要素とのインタラクション

WebElementリファレンスが返された場合は、$webDriver.findElementの関数を使って、その要素を操作できます。たとえば、ボタンをクリックし、テキストを送信して入力を書式設定し、テストする要素の属性を取得します。

機能

説明

click()

この要素をクリックします。

戻り値:自己参照

sendKeys(var_args: ?)

このインスタンスで表されるDOM要素のシーケンスを入力するコマンドをスケジュールします。

戻り値:WebElement

getTagName()

この要素のタグ/ノード名をクエリするコマンドをスケジュールします。

戻り値:WebElement

getCssValue(name: string)

このインスタンスで表される要素の計算されたスタイルをクエリするコマンドをスケジュールします。要素が指定されたスタイルをその親から継承する場合、その値のクエリはその親に対して実行されます。可能な場合、色の値は16進数表現に変換されます(例:rgb(0, 255, 0)の代わりに#00ff00)。

戻り値:promise

getAttribute(name: string)

要素の指定された属性の値をクエリするコマンドをスケジュールします。

戻り値:promise

getText(name: string)

先頭と末尾の空白を除いて、部分要素を含め、この要素の表示されている(CSSで非表示にされていない)innerTextを取得します。

戻り値:promise

getSize()

この要素の境界ボックスのサイズをピクセル単位で計算するコマンドをスケジュールします。

戻り値:promise

getLocation()

この要素のページスペースでの位置を計算するコマンドをスケジュールします。

戻り値:promise

isEnabled()

このインスタンスで表されるDOM要素が、無効な属性によって決定されたとおりに有効化されているかどうかをクエリするコマンドをスケジュールします。

戻り値:promise

isSelected()

この要素が選択されているかどうかをクエリするコマンドをスケジュールします。

戻り値:promise

submit()

この要素(または、FORM要素の場合はこの要素)を含むフォームを送信するコマンドをスケジュールします。このコマンドは、要素がフォームに含まれていない場合はno-opです。

戻り値:promise

clear()

この要素の値をクリアするコマンドをスケジュールします。

戻り値:promise

isDisplayed()

この要素が現在表示されているかどうかをテストするコマンドをスケジュールします。

戻り値:promise

ActionSequence:複数のアクションをリンク

アクションシーケンスを使用すると、Webサイトとの複雑なユーザーインタラクションを作成できます。

  • 新しいアクションシーケンスを作成するには、$webDriver.actions()を使用します。
  • 複数のアクションを1つのシーケンスにリンクするには、それぞれのアクションの後にperform()を含めます。これにより、シングルアクションのシーケンスを含む個々のシーケンスが実行された後、終了されます。

以下の表は、利用可能なアクションのリストを示しています。詳細については、GitHubのWebDriver ActionSequenceに関するドキュメントをご覧ください。

機能

説明

click(opt_elementOrButton: ?, opt_button: ?)

マウスボタンをクリックします。要素が指定されている場合、マウスは最初にその要素の中央に移動します。これはWebElement.click()に相当します。

戻り値:actionsequence

doubleClick(opt_elementOrButton: ?, opt_button: ?)

マウスボタンをダブルクリックします。要素が指定されている場合、マウスは最初にその要素の中央に移動します。

戻り値:actionsequence

dragAndDrop(element: ?, location: ?)

「ドラッグ&ドロップ」操作を実行する便利な関数。ターゲット要素は、別の要素の位置に移動するか、オフセット(ピクセル単位)で移動することができます。この位置は、2つのプロパティxyを含むオブジェクト{x: x_offset, y: y_offset}です。

戻り値:actionsequence

keyDown(key: ?)

修飾キーを押します。ALTCONTROLSHIFTCOMMANDまたはMETAのいずれかである必要があります。修飾キーはkeyUp()またはsendKeys()が呼び出されるまでリリースされません。キー押しは、現在フォーカスされている要素をターゲットにします。

戻り値:actionsequence

keyUp(key: ?)

修飾キーをリリースします。リリースは、現在フォーカスされている要素をターゲットにします。

戻り値:actionsequence

press(opt_elementOrButton: ?, opt_button: ?)

マウスボタンを押します。マウスボタンは、releaseが呼び出されるまでは、そのコールがこのシーケンスか別のシーケンスで実行されるかにかかわらずリリースされません。不適切なシーケンスのイベントの動作(ボタンがすでに押されている状態でpress()またはclick()を呼び出すなど)は定義されません。

戻り値:actionsequence

release(opt_elementOrButton: ?, opt_button: ?)

マウスボタンをリリースします。この関数の呼び出しに対する動作は、press()の前回の呼び出しなしでは定義されません。

戻り値:actionsequence

move(location: ?, offset: ?)

マウスを移動します。移動する位置は、マウスの現在の位置、要素の左上隅に相対的なオフセット、または要素(この場合は要素の中央が使用される) の観点から指定できます。

戻り値:actionsequence

perform()

このアクションシーケンスを実行します。

戻り値:promise

sendKeys(args: ?)

複数のキーの入力をシミュレートします。このシーケンス中に修飾キーがあった場合、それぞれ、その修飾キーが再度現れるまでリリースされません。すべてのキーイベントは、現在フォーカスされている要素をターゲットにします。サポートされている英数字以外のキーの全リストについては、GitHubのWebDriver enumキーのドキュメントをご覧ください。

戻り値:actionsequence

Promise:アクションをシーケンスにリンクする

関数をpromiseで直接実行することもできます。Syntheticsモニタリングは、ネイティブのNode.js環境であり、標準的なNode.jsのpromiseを使用します。

これらの関数は、promiseのステータスの評価やpromiseのキャンセルなどを行います。具体的には、then()関数とその兄弟関数finally()catch()を使用して、アクションシーケンスを作成できます。とのアクションのシーケンスを作成できます。詳細については、「シーケンスアクション」をご覧ください。

ヒント

.then構文を使用してPromiseチェーンをサポートすることに加えて、このランタイムは、非同期待機構文もサポートします。

機能

説明

isPending()

このpromiseの値がまだ計算中であるかどうか。

戻り値:ブール値

then(opt_callback: fn(T: ?), opt_errback: fn())

このインスタンスが解決されたときのためのリスナーを登録します。これは、スクリプトで同期アクションをリンクするために使用される基本的な関数です。

戻り値:promise

finally(callback: fn())

このpromiseが解決されたときに呼び出すリスナーを登録します。promiseの値が正常に計算されたかどうかは関係ありません。

戻り値:promise

catch(callback: fn())

このpromiseが拒否されたときのためのリスナーを登録します。

戻り値:promise

Navigate:ブラウザの履歴を移動する

$webDriver.navigate()関数は、ブラウザの履歴を前後に移動したり、ページを更新したり、新しいページに移動したりするためのさまざまな関数を提供します。

機能

説明

Conditions:一時停止と条件待ち

ヒント

Seleniumでの待機時間の詳細については、公式文書をご覧ください。

$webDriver.waitと使用すると、untilは条件が一致するまで、スクリプトの実行を一時停止します。詳細については、SeleniumのWebDriver untilのドキュメントを参照してください。

$selenium.until.Conditionに対して利用可能な関数:

機能

説明

ableToSwitchToFrame(frame: ?)

入力ドライバが指定されたフレームに切り替えることができるまで待機する条件を作成します。ターゲットフレームは、次のように指定できます。

  • 現在のフレームに対するwindow.framesへの数値インデックス

  • 現在のページのFRAMEまたはIFRAMEの要素を参照する必要があるwebdriver.WebElement

  • そのフレームへの切り替えを試みる前に、最初に現在のページ上のFRAMEまたはIFRAMEを検索するのに使用できるロケーター。

    この状態が正常に解決されたら、ドライバは新しいフレームにフォーカスした状態のままになります。

    戻り値:条件

alertIsPresent()

アラートがオープンされるのを待機する条件を作成します。処理が正常に完了したら、返されるpromiseはオープンされたアラートのハンドルで実行されます。

戻り値:条件

elementIsDisabled(element: $selenium.WebElement)

指定された要素が無効になるまで待機する条件を作成します。

戻り値:条件

elementIsEnabled(element: $selenium.WebElement)

指定された要素が有効になるまで待機する条件を作成します。

戻り値:条件

elementIsNotVisible(element: $selenium.WebElement)

指定された要素がユーザーには表示されないが、DOMに現れるまで待機する条件を作成します。

戻り値:条件

elementIsVisible(element: $selenium.WebElement)

指定された要素が表示されるまで待機する条件を作成します。

戻り値:条件

elementIsSelected(element: $selenium.WebElement)

指定された要素が選択されるまで待機する条件を作成します。

戻り値:条件

elementLocated(element: $selenium.Locator)

要素が指定されたロケーターで見つかるまでループする条件を作成します。

戻り値:条件

elementsLocated(element: $selenium.Locator)

少なくとも1つの要素が指定されたロケーターで見つかるまでループする条件を作成します。

戻り値:条件

n

elementTextContains(element: $selenium.WebElement, substr: string)

指定された要素の表示されているテキストに指定された部分文字列が含まれるまで待機する条件を作成します。

戻り値:条件

elementTextIs(element: $selenium.WebElement, text: string)

大文字と小文字が区別されます。指定された要素の表示されているテキストが指定されたテキストに正確に一致するまで待機する条件を作成します。

戻り値:条件

n

elementTextMatches(element: $selenium.WebElement, regex: string)

指定された要素の表示されているテキストが正規表現に一致するまで待機する条件を作成します。

戻り値:条件

stalenessOf(element: $selenium.WebElement)

指定された要素が古くなるまで待機する条件を作成します。要素はDOMから削除された時点で、または新しいページがロードされた時点で、古くなったとみなされます。

戻り値:条件

titleContains(substr: string)

現在のページのタイトルに指定された部分文字列が含まれるまで待機する条件を作成します。

戻り値:条件

titleIs(title: string)

現在のページのタイトルが指定された値に一致するまで待機する条件を作成します。

戻り値:条件

titleMatches(regex: string)

現在のページのタイトルが指定された正規表現と一致するまで待機する条件を作成します。

戻り値:条件

Shadow DOM:要素の検索

このランタイムは、新しいSelenium WebDriverメソッドgetShadowRoot()を使用してShadow DOM要素へのアクセスをサポートするようになりました。

  1. シャドウホストを見つけるには、findElementまたは同様の最上位関数を使用します。これは、シャドウルートがマウントされる要素です。
  2. 手順1で見つかった要素のgetShadowRoot()メソッドを使用して、シャドウルートを取得します。
  3. シャドウルートを使用して、findElementまたは同様の関数を使用して、シャドウルート内の要素を検索できるようになりました。複数レベルのShadow DOMを使用する場合、操作に必要な要素を含むシャドウルートオブジェクトにアクセスするまで、これらの手順を繰り返す必要があります。

ヒント

Chromeはシャドールートオブジェクト内のXPathロケーターの使用をサポートしていません。別のロケーターオプションを使用して、シャドールートオブジェクト内の要素を検索してください。

例:

// Find the shadow host
let myShadowHost = await $webDriver.findElement($selenium.By.id('exampleShadowHost'));
// Get the shadow root
let myShadowRoot = await myShadowHost.getShadowRoot();
// Interact with an element inside the shadow root
let el = await myShadowRoot.findElement($selenium.By.id('myButton'));
await el.click();
Copyright © 2022 New Relic Inc.

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.