Kątomierz - Core APIS

Ten rozdział pozwala zrozumieć różne podstawowe interfejsy API, które są kluczowe dla funkcjonowania kątomierza.

Znaczenie interfejsów API Protractor

Protractor udostępnia nam szeroką gamę API, które są bardzo ważne, aby wykonać następujące czynności w celu uzyskania aktualnego stanu strony -

  • Pobieranie elementów DOM strony internetowej, którą zamierzamy przetestować.
  • Interakcja z elementami DOM.
  • Przypisywanie im działań.
  • Udostępnianie im informacji.

Aby wykonać powyższe zadania, bardzo ważne jest zrozumienie interfejsów API Protractor.

Różne interfejsy API Protractor

Jak wiemy, Protractor jest opakowaniem otaczającym Selenium-WebDriver, które jest wiązaniem WebDriver dla Node.js. Protractor ma następujące interfejsy API -

Przeglądarka

Jest to opakowanie otaczające instancję WebDriver, która jest używana do obsługi poleceń na poziomie przeglądarki, takich jak nawigacja, informacje dotyczące całej strony itp. Na przykład metoda browser.get ładuje stronę.

Element

Służy do wyszukiwania i interakcji z elementem DOM na testowanej stronie. W tym celu wymaga jednego parametru do lokalizacji elementu.

Lokalizatory (według)

Jest to zbiór strategii lokalizatora elementów. Na przykład elementy można znaleźć za pomocą selektora CSS, według identyfikatora lub dowolnego innego atrybutu, z którym są powiązane za pomocą ng-model.

Następnie omówimy szczegółowo te interfejsy API i ich funkcje.

Browser API

Jak omówiono powyżej, jest to opakowanie otaczające instancję WebDriver do obsługi poleceń na poziomie przeglądarki. Wykonuje różne funkcje w następujący sposób -

Funkcje i ich opisy

Funkcje API ProtractorBrowser są następujące:

browser.angularAppRoot

Ta funkcja API przeglądarki ustawia selektor CSS dla elementu, na którym znajdziemy Angular. Zwykle ta funkcja znajduje się w 'body', ale w przypadku, gdy nasza aplikacja ng-app, znajduje się w podsekcji strony; może to być również element podrzędny.

browser.waitForAngularEnabled

Tę funkcję interfejsu API przeglądarki można ustawić na wartość true lub false. Jak sama nazwa wskazuje, jeśli ta funkcja ma wartość false, to Protractor nie będzie czekał na zakończenie zadań Angular $ http i $ timeout przed interakcją z przeglądarką. Możemy również odczytać aktualny stan bez zmiany go, wywołując waitForAngularEnabled () bez przekazywania wartości.

browser.getProcessedConfig

Za pomocą tej funkcji API przeglądarki możemy uzyskać przetworzony obiekt konfiguracyjny, w tym specyfikację i możliwości, który jest aktualnie uruchamiany.

browser.forkNewDriverInstance

Jak sama nazwa wskazuje, ta funkcja rozwidli kolejną instancję przeglądarki do użycia w testach interaktywnych. Można go uruchomić z włączonym i wyłączonym przepływem sterowania. Poniżej podano przykład dla obu przypadków -

Example 1

Bieganie browser.forkNewDriverInstance() z włączonym przepływem sterowania -

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

Example 2

Bieganie browser.forkNewDriverInstance() z wyłączonym przepływem sterowania -

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

browser.restart

Jak sama nazwa wskazuje, zrestartuje przeglądarkę, zamykając instancję przeglądarki i tworząc nową. Może również działać z włączonym i wyłączonym przepływem sterowania. Poniżej podano przykład dla obu przypadków -

Example 1 - Bieganie browser.restart() z włączonym przepływem sterowania -

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

Example 2 - Bieganie browser.forkNewDriverInstance() z wyłączonym przepływem sterowania -

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

browser.restartSync

Działa podobnie do funkcji browser.restart (). Jedyna różnica polega na tym, że zwraca bezpośrednio nową instancję przeglądarki, zamiast zwracać obietnicę dotyczącą nowej instancji przeglądarki. Może działać tylko wtedy, gdy przepływ sterowania jest włączony.

Example - Bieganie browser.restartSync() z włączonym przepływem sterowania -

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

browser.useAllAngular2AppRoots

Jak sama nazwa wskazuje, jest kompatybilny tylko z Angular2. Przeszukuje wszystkie aplikacje kątowe dostępne na stronie, znajdując elementy lub czekając na stabilność.

browser.waitForAngular

Ta funkcja interfejsu API przeglądarki instruuje WebDriver, aby czekał, aż Angular zakończy renderowanie i nie ma żadnych zaległych wywołań $ http lub $ timeout przed kontynuowaniem.

browser.findElement

Jak sama nazwa wskazuje, ta funkcja API przeglądarki czeka na zakończenie renderowania przez Angular przed wyszukaniem elementu.

browser.isElementPresent

Jak sama nazwa wskazuje, ta funkcja API przeglądarki sprawdzi, czy element występuje na stronie, czy nie.

browser.addMockModule

Doda moduł do załadowania przed Angular za każdym razem, gdy wywoływana jest metoda Protractor.get.

Example

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

browser.clearMockModules

w przeciwieństwie do browser.addMockModule, czyści listę zarejestrowanych modułów pozorowanych.

browser.removeMockModule

Jak sama nazwa wskazuje, usunie ona makiety rejestru. Przykład: browser.removeMockModule ('modName');

browser.getRegisteredMockModules

W przeciwieństwie do browser.clearMockModule otrzyma listę zarejestrowanych modułów pozorowanych.

browser.get

Możemy użyć browser.get (), aby przejść w przeglądarce do konkretnego adresu internetowego i załadować moduły pozorowane dla tej strony przed załadowaniem Angulara.

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

Jak sama nazwa wskazuje, spowoduje to ponowne załadowanie bieżącej strony i załadowanie modułów pozorowanych przed Angular.

browser.navigate

Jak sama nazwa wskazuje, jest używany do mieszania metod nawigacji z powrotem w obiekcie nawigacji, tak aby były wywoływane jak poprzednio. Przykład: driver.navigate (). Refresh ().

browser.setLocation

Służy do przeglądania innej strony za pomocą nawigacji wewnątrz strony.

Example

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

Przejdzie z ABC do strony DEF.

browser.debugger

Jak sama nazwa wskazuje, musi być używane z debugowaniem kątomierza. Ta funkcja w zasadzie dodaje zadanie do przepływu sterowania, aby wstrzymać test i wstrzyknąć funkcje pomocnicze do przeglądarki, aby debugowanie można było przeprowadzić w konsoli przeglądarki.

browser.pause

Służy do debugowania testów WebDriver. Możemy użyćbrowser.pause() w naszym teście, aby wejść do debugera kątomierza z tego punktu przepływu sterowania.

Example

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

browser.controlFlowEnabled

Służy do określenia, czy przepływ sterowania jest włączony, czy nie.