Goniometro - Core APIS

Questo capitolo consente di comprendere le varie API principali che sono fondamentali per il funzionamento del goniometro.

Importanza delle API Goniometro

Goniometro ci fornisce una vasta gamma di API che sono molto importanti per eseguire le seguenti azioni per ottenere lo stato corrente del sito Web:

  • Ottenere gli elementi DOM della pagina web che andremo a testare.
  • Interagire con gli elementi DOM.
  • Assegnare azioni a loro.
  • Condivisione di informazioni con loro.

Per eseguire le attività di cui sopra, è molto importante comprendere le API di Protractor.

Varie API Goniometro

Come sappiamo, Protractor è un wrapper attorno a Selenium-WebDriver, che è il collegamento WebDriver per Node.js. Goniometro ha le seguenti API:

Browser

È un wrapper attorno a un'istanza di WebDriver che viene utilizzata per gestire comandi a livello di browser come navigazione, informazioni a livello di pagina, ecc. Ad esempio, il metodo browser.get carica una pagina.

Elemento

Viene utilizzato per cercare e interagire con l'elemento DOM nella pagina che stiamo testando. A tal fine, richiede un parametro per individuare l'elemento.

Localizzatori (di)

È una raccolta di strategie di individuazione degli elementi. Gli elementi, ad esempio, possono essere trovati dal selettore CSS, dall'ID o da qualsiasi altro attributo a cui sono associati con ng-model.

Successivamente, discuteremo in dettaglio di queste API e delle loro funzioni.

API del browser

Come discusso in precedenza, è un wrapper attorno a un'istanza di WebDriver per la gestione dei comandi a livello di browser. Svolge varie funzioni come segue:

Funzioni e loro descrizioni

Le funzioni dell'API ProtractorBrowser sono le seguenti:

browser.angularAppRoot

Questa funzione dell'API del browser imposta il selettore CSS per un elemento su cui troveremo Angular. Di solito, questa funzione è in 'body', ma nel caso in cui la nostra ng-app, si trova in una sottosezione della pagina; può anche essere un sottoelemento.

browser.waitForAngularEnabled

Questa funzione dell'API del browser può essere impostata su true o false. Come suggerisce il nome, se questa funzione è impostata su false, Protractor non aspetterà il completamento delle attività $ http e $ timeout di Angular prima di interagire con il browser. Possiamo anche leggere lo stato corrente senza modificarlo chiamando waitForAngularEnabled () senza passare un valore.

browser.getProcessedConfig

Con l'aiuto di questa funzione delle API del browser possiamo ottenere l'oggetto di configurazione elaborato, comprese le specifiche e le capacità, che è attualmente in esecuzione.

browser.forkNewDriverInstance

Come suggerisce il nome, questa funzione eseguirà il fork di un'altra istanza del browser da utilizzare nei test interattivi. Può essere eseguito con il flusso di controllo abilitato e disabilitato. Di seguito viene fornito un esempio per entrambi i casi:

Example 1

In esecuzione browser.forkNewDriverInstance() con flusso di controllo abilitato -

var fork = browser.forkNewDriverInstance();
fork.get(‘page1’);

Example 2

In esecuzione browser.forkNewDriverInstance() con flusso di controllo disabilitato -

var fork = await browser.forkNewDriverInstance().ready;
await forked.get(‘page1’);

browser.restart

Come suggerisce il nome, riavvierà il browser chiudendo l'istanza del browser e creandone una nuova. Può anche essere eseguito con il flusso di controllo abilitato e disabilitato. Di seguito viene fornito un esempio per entrambi i casi:

Example 1 - In esecuzione browser.restart() con flusso di controllo abilitato -

browser.get(‘page1’);
browser.restart();
browser.get(‘page2’);

Example 2 - In esecuzione browser.forkNewDriverInstance() con flusso di controllo disabilitato -

await browser.get(‘page1’);
await browser.restart();
await browser.get(‘page2’);

browser.restartSync

È simile alla funzione browser.restart (). L'unica differenza è che restituisce direttamente la nuova istanza del browser invece di restituire una promessa che si risolve alla nuova istanza del browser. Può essere eseguito solo quando il flusso di controllo è abilitato.

Example - In esecuzione browser.restartSync() con flusso di controllo abilitato -

browser.get(‘page1’);
browser.restartSync();
browser.get(‘page2’);

browser.useAllAngular2AppRoots

Come suggerisce il nome, è compatibile solo con Angular2. Cercherà tra tutte le app angolari disponibili sulla pagina mentre trova elementi o attende stabilità.

browser.waitForAngular

Questa funzione dell'API del browser indica al WebDriver di attendere fino a quando Angular non ha terminato il rendering e non ha chiamate $ http o $ timeout in sospeso prima di continuare.

browser.findElement

Come suggerisce il nome, questa funzione API del browser attende che Angular termini il rendering prima di cercare l'elemento.

browser.isElementPresent

Come suggerisce il nome, questa funzione API del browser verificherà che l'elemento sia presente o meno nella pagina.

browser.addMockModule

Aggiungerà un modulo da caricare prima di Angular ogni volta che viene chiamato il metodo Protractor.get.

Example

browser.addMockModule('modName', function() {
   angular.module('modName', []).value('foo', 'bar');
});

browser.clearMockModules

a differenza di browser.addMockModule, cancellerà l'elenco dei moduli fittizi registrati.

browser.removeMockModule

Come suggerisce il nome, rimuoverà un registro dei moduli fittizi. Esempio: browser.removeMockModule ('modName');

browser.getRegisteredMockModules

Di fronte a browser.clearMockModule, otterrà l'elenco dei moduli fittizi registrati.

browser.get

Possiamo usare browser.get () per navigare nel browser verso un particolare indirizzo web e caricare i moduli fittizi per quella pagina prima del caricamento angolare.

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

Come suggerisce il nome, questo ricaricherà la pagina corrente e caricherà i moduli fittizi prima di Angular.

browser.navigate

Come suggerisce il nome, viene utilizzato per combinare i metodi di navigazione nell'oggetto di navigazione in modo che vengano richiamati come prima. Esempio: driver.navigate (). Refresh ().

browser.setLocation

Viene utilizzato per passare a un'altra pagina utilizzando la navigazione in-page.

Example

browser.get('url/ABC');
browser.setLocation('DEF');
expect(browser.getCurrentUrl())
   .toBe('url/DEF');

Navigherà dalla pagina ABC alla pagina DEF.

browser.debugger

Come suggerisce il nome, deve essere utilizzato con il debug del goniometro. Questa funzione fondamentalmente aggiunge un'attività al flusso di controllo per mettere in pausa il test e inserire funzioni di supporto nel browser in modo che il debug possa essere eseguito nella console del browser.

browser.pause

Viene utilizzato per il debug dei test WebDriver. Possiamo usarebrowser.pause() nel nostro test per entrare nel debugger del goniometro da quel punto nel flusso di controllo.

Example

element(by.id('foo')).click();
browser.pause();
// Execution will stop before the next click action.
element(by.id('bar')).click();

browser.controlFlowEnabled

Viene utilizzato per determinare se il flusso di controllo è abilitato o meno.