Scripted Browser: 要素を操作しようとすると失敗する
古いランタイムで作成されたモニターをChrome 100 (またはそれ以降)のランタイムに対して検証する場合、ページ上の要素を検索して操作する findElement およびその他のメソッドは、promise 処理の違いにより失敗する場合があります。モニターがレガシー ランタイムで合格し、新しいランタイムで失敗し、要素がスクリーンショットに存在する場合、promise 処理ロジックを改善する必要がある場合があります。
Selenium WebDriver の promise マネージャー/制御フローにより、promise を管理せずに、一部の関数をレガシー ランタイムで順番に実行できました。この機能は Selenium WebDriver 4.0 で削除され、ランタイムでは使用できなくなりました。すべての非同期関数と promise は、 await
または.then
promise チェーンで管理する必要があります。これにより、スクリプト関数が期待どおりの順序で実行されるようになります。
たとえば、$browser.get が promise を返し、promise が正しく処理されていない場合でも、promise manager/制御フローにより、この部分的なスクリプトが正常に完了する可能性があります。
$browser.get('http://example.com');
$browser.findElement($driver.By.css('h1'));
Chrome 100 (またはそれ以降) のランタイムでは、promise を返すすべてのメソッドで await または .then を使用する必要がありますステップを適切に順序付けるための構文。構文が簡潔で使いやすいため、await の使用をお勧めしますが、.thenpromise チェーンも引き続きサポートされます。
await $browser.get('http://example.com');
let el = await $browser.findElement($driver.By.css('h1'));
スクリプト API: request
との違い got
Node.js 10 以前のスクリプト化された API ランタイムは、 request
Node.js モジュールを使用して、API のテストに使用できる$http
オブジェクトを提供していました。
Node.js 16 以降のスクリプト化された API ランタイムは、 request
} の代わりにgot
を使用します。request
モジュールは 2020 年に廃止され、新しい API またはブラウザ ベースのランタイムには含まれなくなります。$http
オブジェクトは、非推奨のモジュールの使用を回避しながら、基本的なユース ケースの下位互換性を提供するためにgot
を利用しながら、 request
のようなカスタム エクスペリエンスを提供します。request
のすべての高度なユース ケースがサポートされているわけではありません。スクリプト例と変換ガイドが利用可能です。
ヒント
$http
オブジェクトによって提供されるrequest
のようなエクスペリエンスは、Node.js 16 以降のスクリプト化された API ランタイムでrequest
を直接使用しようとするすべての顧客に対しても返されます。
スクリプト化された API: 予期しないトークン JSON.parse エラー
応答本文の操作中にJSON.parse
関数を使用しようとすると、Node.js 16 以降のランタイムを使用するスクリプト API モニターで予期しないトークン エラーが発生する可能性があります。content-type 応答ヘッダーがapplication/json
の場合、 $http
オブジェクトによって返される応答本文は解析された JSON になります。JSON.parse
を使用して応答本文を解析しようとする追加の呼び出しは、応答本文がすでに解析されているため、このエラーで失敗します。
Scripted Browser: 非推奨の警告 ($browser / $driver)
$browser
と$driver
の非推奨の警告は、ブラウザ ランタイムの 2.0.29 以降のバージョンから削除されました。公共の場所を使用するときにこれらの警告が表示されなくなります。プライベート ロケーションの使用時にこれらの警告が表示される場合は、ノード ブラウザー ランタイム イメージを更新してください。
スクリプト化されたブラウザ: waitForAndFindElement および waitForPendingRequests
waitForAndFindElement
メソッドとwaitForPendingRequests
メソッドは、Chrome 72 以前のスクリプト化されたブラウザ ランタイムで提供される New Relic カスタム メソッドです。Chrome 100 以降のランタイムでは引き続き$driver
および$browser
で使用できますが、Selenium WebDriver 4.1 API を$selenium
および$webDriver
で直接使用する場合は使用できません。この変更により、New Relic の Selenium WebDriver 実装が基本の Selenium WebDriver 実装とより適切に連携します。
新しいランタイムでwaitForAndFindElement
またはwaitForPendingRequests
を引き続き使用することを選択したお客様は、 コード例をモニターに貼り付けることができます。