分度器-コアAPI
この章では、分度器の機能の鍵となるさまざまなコアAPIを理解できます。
分度器APIの重要性
分度器は、ウェブサイトの現在の状態を取得するために次のアクションを実行するために非常に重要なさまざまなAPIを提供します-
- テストするWebページのDOM要素を取得します。
- DOM要素との相互作用。
- それらにアクションを割り当てます。
- 彼らに情報を共有する。
上記のタスクを実行するには、分度器APIを理解することが非常に重要です。
さまざまな分度器API
Protractorは、Node.jsのWebDriverバインディングであるSelenium-WebDriverのラッパーであることがわかっています。分度器には次のAPIがあります-
ブラウザ
これは、ナビゲーション、ページ全体の情報などのブラウザーレベルのコマンドを処理するために使用されるWebDriverのインスタンスのラッパーです。たとえば、browser.getメソッドはページをロードします。
素子
これは、テストしているページのDOM要素を検索して操作するために使用されます。この目的のために、要素を見つけるための1つのパラメーターが必要です。
ロケーター(by)
これは、要素ロケーター戦略のコレクションです。たとえば、要素は、CSSセレクター、ID、またはng-modelでバインドされているその他の属性によって見つけることができます。
次に、これらのAPIとその機能について詳しく説明します。
ブラウザAPI
上で説明したように、これはブラウザレベルのコマンドを処理するためのWebDriverのインスタンスのラッパーです。次のようにさまざまな機能を実行します-
関数とその説明
ProtractorBrowserAPIの機能は次のとおりです-
browser.angularAppRoot
Browser APIのこの関数は、Angularを検索する要素のCSSセレクターを設定します。通常、この関数は「body」にありますが、ng-appの場合は、ページのサブセクションにあります。サブ要素の場合もあります。
browser.waitForAngularEnabled
Browser APIのこの関数は、trueまたはfalseに設定できます。名前が示すように、この関数がfalseに設定されている場合、分度器はブラウザと対話する前にAngular $ httpおよび$ timeoutタスクが完了するのを待ちません。値を渡さずにwaitForAngularEnabled()を呼び出すことで、現在の状態を変更せずに読み取ることもできます。
browser.getProcessedConfig
このブラウザAPI関数の助けを借りて、現在実行されている仕様と機能を含む、処理された構成オブジェクトを取得できます。
browser.forkNewDriverInstance
名前が示すように、この関数は、対話型テストで使用されるブラウザーの別のインスタンスをフォークします。制御フローを有効または無効にして実行できます。両方の場合の例を以下に示します-
Example 1
ランニング browser.forkNewDriverInstance() 制御フローを有効にした場合-
var fork = browser.forkNewDriverInstance();
fork.get(‘page1’);
Example 2
ランニング browser.forkNewDriverInstance() 制御フローを無効にした場合-
var fork = await browser.forkNewDriverInstance().ready;
await forked.get(‘page1’);
browser.restart
名前が示すように、ブラウザインスタンスを閉じて新しいインスタンスを作成することにより、ブラウザを再起動します。また、制御フローを有効または無効にして実行することもできます。両方の場合の例を以下に示します-
Example 1 −ランニング browser.restart() 制御フローを有効にした場合-
browser.get(‘page1’);
browser.restart();
browser.get(‘page2’);
Example 2 −ランニング browser.forkNewDriverInstance() 制御フローを無効にした場合-
await browser.get(‘page1’);
await browser.restart();
await browser.get(‘page2’);
browser.restartSync
これはbrowser.restart()関数に似ています。唯一の違いは、新しいブラウザインスタンスに解決するpromiseを返すのではなく、新しいブラウザインスタンスを直接返すことです。制御フローが有効になっている場合にのみ実行できます。
Example −ランニング browser.restartSync() 制御フローを有効にした場合-
browser.get(‘page1’);
browser.restartSync();
browser.get(‘page2’);
browser.useAllAngular2AppRoots
名前が示すように、Angular2とのみ互換性があります。要素を見つけたり、安定性を待ったりしながら、ページで利用可能なすべての角度のあるアプリを検索します。
browser.waitForAngular
このブラウザーAPI関数は、Angularがレンダリングを終了し、未処理の$ httpまたは$ timeout呼び出しがなくなるまで待機してから、続行するようにWebDriverに指示します。
browser.findElement
名前が示すように、このブラウザーAPI関数は、要素を検索する前にAngularがレンダリングを終了するのを待ちます。
browser.isElementPresent
名前が示すように、このブラウザAPI関数は、要素がページに存在するかどうかをテストします。
browser.addMockModule
Protractor.getメソッドが呼び出されるたびに、Angularの前にロードするモジュールが追加されます。
Example
browser.addMockModule('modName', function() {
angular.module('modName', []).value('foo', 'bar');
});
browser.clearMockModules
browser.addMockModuleとは異なり、登録されているモックモジュールのリストをクリアします。
browser.removeMockModule
名前が示すように、レジスタモックモジュールを削除します。例:browser.removeMockModule( 'modName');
browser.getRegisteredMockModules
browser.clearMockModuleの反対側で、登録されているモックモジュールのリストを取得します。
browser.get
browser.get()を使用して、ブラウザーを特定のWebアドレスにナビゲートし、Angularをロードする前にそのページのモックモジュールをロードできます。
Example
browser.get(url);
browser.get('http://localhost:3000');
// This will navigate to the localhost:3000 and will load mock module if needed
browser.refresh
名前が示すように、これは現在のページをリロードし、Angularの前にモックモジュールをロードします。
browser.navigate
名前が示すように、以前と同じように呼び出されるように、ナビゲーションメソッドをナビゲーションオブジェクトに戻すために使用されます。例:driver.navigate()。refresh()。
browser.setLocation
ページ内ナビゲーションを使用して別のページを参照するために使用されます。
Example
browser.get('url/ABC');
browser.setLocation('DEF');
expect(browser.getCurrentUrl())
.toBe('url/DEF');
ABCからDEFページに移動します。
browser.debugger
名前が示すように、これは分度器のデバッグで使用する必要があります。この関数は基本的に、制御フローにタスクを追加して、テストを一時停止し、ヘルパー関数をブラウザーに挿入して、ブラウザーコンソールでデバッグを実行できるようにします。
browser.pause
WebDriverテストのデバッグに使用されます。使用できますbrowser.pause() テストでは、制御フローのそのポイントから分度器デバッガーに入ります。
Example
element(by.id('foo')).click();
browser.pause();
// Execution will stop before the next click action.
element(by.id('bar')).click();
browser.controlFlowEnabled
制御フローが有効かどうかを判断するために使用されます。