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.