スクリプト化ブラウザでは、Selenium WebDriverで動作するシンプルなJavaScriptのようなスクリプト言語を使用して、複雑なモニターのワークフローを構築できます。
使用可能なすべての関数に関する詳細なガイドについては、Syntheticsスクリプト化ブラウザのリファレンスをご覧ください。
ヒント
その他のスクリプト化ブラウザの例を表示するには、New RelicのGithubリポジトリにあるクイックスタートSyntheticsライブラリをご覧ください。また、New RelicオンラインテクニカルコミュニティのレベルアップRelicソリューションセクションで、New Relic Supportエンジニアからのヒントを参照することもできます。
URLの監視
この例では、モニターはhttp://telco.nrdemo-sandbox.com/を閲覧します。
//Visit http://telco.nrdemo-sandbox.com/$browser.get("http://telco.nrdemo-sandbox.com/");
このスクリプトアクションは、ほぼすべてのスクリプト化ブラウザの基礎です。詳細については、URLにアクセスするをご覧ください。
リンクへの移動
以下の例では、モニターは次の項目を実行します。
- http://telco.nrdemo-sandbox.com/に移動します。
- リンクテキストにより概要ページを検索し、リンクをクリックします。
- 一部の文字列
Home
を検索してAcme Telco Homeリンクを検索し、リンクをクリックします。
$browser.get("http://telco.nrdemo-sandbox.com/").then(function(){//Find a link whose display text is `About` and click that link. return $browser.findElement($driver.By.linkText("About")).click();}).then(function(){ return $browser.findElement($driver.By.partialLinkText("Home")).click();});
これらの手順はシーケンス関数によってソートされます。
要素の検出に関する詳細な指示および他のメソッドについては、要素を特定するをご覧ください。すべてのロケーターのリストについては、ロケーター:ページ要素の特定をご覧ください。
Webサイトの検索
以下の例では、モニターは次の項目を実行します。
- http://telco.nrdemo-sandbox.com/static/companyBlog.jspに移動します。
- XPathにより検索ボックスに移動し、
relic
と入力します。 - XPathにより送信ボタンに移動し、ボタンをクリックして検索を送信します。
$browser.get("http://telco.nrdemo-sandbox.com/static/companyBlog.jsp").then(function(){//Find the search field by specifying its id, then enter `relic`. return $browser.findElement($driver.By.xpath("//h4[text()='Blog Search']/following-sibling::div/input")).sendKeys("relic");}).then(function(){//Click the search button. return $browser.findElement($driver.By.xpath("//h4[text()='Blog Search']/following-sibling::div//button")).click();});
テキストのフィールドへの送信については、テキストを入力するをご覧ください。
ページが読み込まれるまで待機
以下の例では、モニターは次の項目を実行します。
- http://telco.nrdemo-sandbox.com/browse/phonesに移動します。
- XPathにより**Acme Standard**電話の詳細ボタンを検索し、ボタンをクリックします。
- 次に、HTMLページのタイトルが
Acme Commerce Company
と一致するまで10秒間待機します。 - XPathによりカートに追加ボタンを検索し、ボタンをクリックします。
$browser.get("http://telco.nrdemo-sandbox.com/browse/phones").then(function(){ return $browser.findElement($driver.By.xpath("(//a[text()='Details'])[3]")).click();});//Call the wait function.$browser.wait(function() {//Tell the monitor to get the page title, then run a function on that title. return $browser.getTitle().then(function(title) {//Ensure that the title matches `Acme Commerce Company`. return title === "Acme Commerce Company"; });//If the condition isn't satisfied within 10000 milliseconds (10 seconds), proceed anyway.}, 10000);//Find the `Add to Cart` button via its XPath and click it.$browser.findElement($driver.By.xpath("//input[@value='Add to Cart']")).click();
スクリプトを一時停止する待機条件の設定については、ページタイトルを待機するをご覧ください。
ページ要素の待機
以下の例では、モニターは次の項目を実行します。
- http://telco.nrdemo-sandbox.com/を読み込みます。
- HTML IDによりサポートドロップダウンを検索し、クリックします。
- FAQボタンが表示されるまで20秒ほど待ち、ボタンをクリックします。
//Navigate to the Acme Telco Homepage and clicks on the Support dropdown.$browser.get("http://telco.nrdemo-sandbox.com/").then(function(){ return $browser.findElement($driver.By.id("supportDropDown")).click();}).then(function(){ //Call the wait function to wait until the FAQ button appears. return $browser.waitForAndFindElement($driver.By.id("supportFAQLink"), 20000).then(function(aboutPage){ return aboutPage.click(); })});
詳細については、特定要素を待機するおよび条件: 一時停止および条件を待機するをご覧ください。
Webサイトへのログイン
以下の例では、モニターは次の項目を実行します。
- http://telco.nrdemo-sandbox.com/login.jspを読み込みます。
- 要素名によりユーザー名フィールドを検索し、当社の安全な認証情報機能を介して安全なユーザー名を送信します。
- 要素名によりパスワードフィールドを検索し、安全なパスワードを送信します。
- XPathによりログインボタンを検索し、クリックしてアカウント情報を送信します。
$browser.get("http://telco.nrdemo-sandbox.com/login.jsp").then(function(){//Find the user name field by specifying its name, then submits a secured username. return $browser.findElement($driver.By.name("username")).sendKeys($secure.SECURE_USERNAME);}).then(function(){//Find the password field by specifying its name, then submits a secured password. return $browser.findElement($driver.By.name("password")).sendKeys($secure.SECURE_PASSWORD);}).then(function(){//Find and click the login button. return $browser.findElement($driver.By.xpath("//input[@value='Login']")).click();});
安全な認証情報を使用するには、安全な認証情報を保存するを参照してください。
ヒント
どのような認証情報を使用すべきですか?
複数のウェブサイトでパスワードを使い回すべきでないのと同様に、当社では、スクリプトに一意の新たな認証情報を作成することを推奨しています。個人の認証情報を使用したり、認証情報を再使用したりしないでください。