Protractor-core-apis
分度器-コアAPIS
この章では、分度器の機能の鍵となるさまざまなコア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のインスタンスのラッパーです。 次のようにさまざまな機能を実行します-
機能とその説明
ProtractorBrowser APIの機能は次のとおりです。
*browser.angularAppRoot*
ブラウザAPIのこの関数は、Angularを検索する要素のCSSセレクターを設定します。 通常、この関数は「body」にありますが、ng-appの場合、ページのサブセクションにあります。サブ要素でもあります。
*browser.waitForAngularEnabled*
ブラウザAPIのこの関数は、trueまたはfalseに設定できます。 名前が示すように、この関数がfalseに設定されている場合、ProtractorはAngular $ httpおよび$ timeoutタスクが完了するのを待たずにブラウザーと対話します。 値を渡さずにwaitForAngularEnabled()を呼び出すことにより、現在の状態を変更せずに読み取ることもできます。
*browser.getProcessedConfig*
このブラウザーAPI機能の助けを借りて、現在実行中の仕様や機能など、処理された構成オブジェクトを取得できます。
*browser.forkNewDriverInstance*
名前が示すように、この関数は対話型テストで使用されるブラウザーの別のインスタンスを分岐します。 制御フローを有効または無効にして実行できます。 両方の場合の例を以下に示します-
例1
制御フローを有効にして* browser.forkNewDriverInstance()*を実行します-
var fork = browser.forkNewDriverInstance();
fork.get(‘page1’);
例2
制御フローを無効にして* browser.forkNewDriverInstance()*を実行します-
var fork = await browser.forkNewDriverInstance().ready;
await forked.get(‘page1’);
*browser.restart*
名前が示すように、ブラウザインスタンスを閉じて新しいインスタンスを作成することにより、ブラウザを再起動します。 制御フローを有効または無効にして実行することもできます。 両方の場合の例を以下に示します-
例1 *-制御フローを有効にして browser.restart()*を実行する-
browser.get(‘page1’);
browser.restart();
browser.get(‘page2’);
例2 *-制御フローを無効にして browser.forkNewDriverInstance()*を実行する-
await browser.get(‘page1’);
await browser.restart();
await browser.get(‘page2’);
browser.restartSync
browser.restart()関数に似ています。 唯一の違いは、新しいブラウザインスタンスに解決するプロミスを返すのではなく、新しいブラウザインスタンスを直接返すことです。 制御フローが有効になっている場合にのみ実行できます。
例-制御フローを有効にして* 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の前にロードするモジュールを追加します。
例
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のロードの前にそのページのモックモジュールをロードできます。
例
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*
ページ内ナビゲーションを使用して別のページを参照するために使用します。
例
browser.get('url/ABC');
browser.setLocation('DEF');
expect(browser.getCurrentUrl())
.toBe('url/DEF');
ABCからDEFページに移動します。
*browser.debugger*
名前が示すように、これは分度器のデバッグで使用する必要があります。 この関数は基本的に制御フローにタスクを追加して、テストを一時停止し、ブラウザーにヘルパー関数を挿入して、ブラウザーコンソールでデバッグできるようにします。
*browser.pause*
WebDriverテストのデバッグに使用されます。 テストで* browser.pause()*を使用して、制御フローのその時点から分度器デバッガーに入ることができます。
例
element(by.id('foo')).click();
browser.pause();
//Execution will stop before the next click action.
element(by.id('bar')).click();
*browser.controlFlowEnabled*
制御フローが有効かどうかを判断するために使用されます。