• /
  • EnglishEspañol日本語한국어Português
  • ログイン今すぐ開始

Syntheticスクリプト化ブラウザのリファレンス(ChromeおよびFirefox)

Selenium Webdriver 4.1 APIを使用してスクリプト化ブラウザ監視を実行するには、スクリプトの構文で変数 $selenium$webDriver を使用していることを確認してください。SeleniumウェブドライバAPI 3.6.0にアクセスするには、0.5.0 以降のブラウザリファレンスドキュメントに記載されているように、変数$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セレクタ.classで要素を検索した場合と同様です。

戻り値:ロケーター

$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()

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

戻り値: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)

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

戻り値:条件

高度な例

次の例では、コードを定数、依存関係、設定、ページ要素、関数、スクリプトの開始という機能セクションに分割します。以下に方法を説明します。

  • タイムアウトを設定して障害時間を最小限に抑え、パフォーマンスを向上させる
  • CSSまたはIDで要素を検索する
  • waitForAndFindElementを定義します。
  • console.log()を使用してスクリプトログを整理し、アサートの失敗やタイムアウトに関する問題を特定する
  • try/catchブロックを使用してエラーを処理し、失敗したステップを特定する有用なエラーメッセージをスローする
/**
* Script Name: Advanced Example
* Author: New Relic
* Version: 1.6
*/
// -------------------- CONSTANTS
const SCRIPT_NAME = "Best Practices - Chrome 100" // name to record in script log
const IMPLICIT_TIMEOUT = 3000 // default implicit timeout is 10 seconds
const PAGE_LOAD_TIMEOUT = 60000 // default page load timeout is 60 seconds, fail early to prevent long duration timeouts
const SCRIPT_TIMEOUT = 20000 // default script timeout is 30 seconds
const USER_AGENT = "default" // set the user agent for Chrome
const PROTOCOL = "https://" // set the protocol
const USERNAME = "" // username:
const PASSWORD = "" // password@
const DOMAIN = "docs.newrelic.com" // your domain
const PATH = "/docs/new-relic-solutions/get-started/intro-new-relic/" // path to main page
const CHECK = "Get started with New Relic" // text to match on page
const AUTH = USERNAME + PASSWORD // could be stored as secure credentials
const MAIN_URL = PROTOCOL + AUTH + DOMAIN + PATH
// -------------------- DEPENDENCIES
const assert = require("assert")
// -------------------- CONFIGURATION
await $webDriver.manage().setTimeouts({
implicit: IMPLICIT_TIMEOUT, // sets element load timeout
pageLoad: PAGE_LOAD_TIMEOUT, // sets page load timeout
script: SCRIPT_TIMEOUT // sets script timeout
})
// -------------------- ELEMENTS
const By = $selenium.By
const loc = {
title: By.css("#gatsby-focus-wrapper > div.css-1uz5ayg > div > main > div > h1"),
start: [
{ step: 'signup', selector: By.id("sign-up-for-new-relic-if-you-havent-already") },
{ step: 'add', selector: By.id("add-your-data") },
{ step: 'explore', selector: By.id("explore-your-data") },
{ step: 'query', selector: By.id("query-your-data") },
{ step: 'dashboard', selector: By.id("set-up-a-dashboard") },
{ step: 'alerts', selector: By.id("configure-alerts") }
]
}
// -------------------- FUNCTIONS
// for backwards compatibility with legacy runtimes
async function waitForAndFindElement(locator, timeout) {
const element = await $webDriver.wait(
$selenium.until.elementLocated(locator),
timeout,
"Timed-out waiting for element to be located using: " + locator
)
await $webDriver.wait(
$selenium.until.elementIsVisible(element),
timeout,
"Timed-out waiting for element to be visible using ${element}"
)
return await $webDriver.findElement(locator)
}
// -------------------- START OF SCRIPT
// Start logging
const start_time = new Date()
console.log("Starting synthetics script: " + SCRIPT_NAME)
// confirm timeouts are set
const {implicit, pageLoad, script} = await $webDriver.manage().getTimeouts()
console.log("Timeouts are set to:")
console.log(" IMPLICIT: " + implicit / 1000 + "s")
console.log(" PAGE LOAD: " + pageLoad / 1000 + "s")
console.log(" SCRIPT: " + script / 1000 + "s")
// Setting User Agent is not then-able, so we do this first (if defined and not default)
if (USER_AGENT && 0 !== USER_AGENT.trim().length && USER_AGENT != "default") {
$headers.add("User-Agent", USER_AGENT)
console.log("Setting User-Agent to " + USER_AGENT)
}
// if an error happens at any step, script execution is halted and a failed result is returned
console.log("1. get: " + MAIN_URL)
await $webDriver.get(MAIN_URL)
console.log("2. waitForAndFindElement: " + loc.title)
const textBlock = await waitForAndFindElement(loc.title, IMPLICIT_TIMEOUT)
console.log("3. getText: " + CHECK)
const text1 = await textBlock.getText()
console.log("4. assert.equal: " + text1)
assert.equal(text1, CHECK, "title validation text not found")
console.log("5. takeScreenshot")
await $webDriver.takeScreenshot()
console.log("6. findElement")
loc.start.forEach(async function (nr, i) {
let n = i + 1
try{
// verify each asset has loaded
console.log(" " + n + ". " + nr.step + ": " + nr.selector)
await $webDriver.findElement(nr.selector)
}catch(exception){
console.error("Failure in Step 6." + n)
throw exception
}
})
// End logging
const end_time = new Date()
// Calculate the duration
const script_duration = (end_time - start_time) / 1000
// Log the times
console.log("Start time: " + start_time)
console.log("End time: " + end_time)
console.log("Duration: " + script_duration + "s")

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 © 2024 New Relic株式会社。

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