efficient selenium scripting
W poprzednim samouczku omówiliśmy konsekwencje techniczne podczas wdrażania logowania w frameworku . Omawialiśmy narzędzie log4j szczegółowo. Omówiliśmy podstawowe komponenty, które tworzą log4j z perspektywy użyteczności. Dzięki aplikatorom i układom użytkownik może wybrać żądany format / wzorzec rejestrowania oraz źródło / lokalizację danych.
W bieżącym 27 samouczku w tym kompleksowe serie bezpłatnych szkoleń online dotyczących selenu , skupilibyśmy się na kilku trywialnych jeszcze ważne tematy które pomogłyby nam rozwiązać niektóre powtarzające się problemy. Możemy ich używać lub nie w codziennym pisaniu skryptów, ale na dłuższą metę byłyby pomocne.
Chcielibyśmy omówić niektóre zaawansowane koncepcje, w których zajmowalibyśmy się zdarzeniami myszy i klawiatury, uzyskując dostęp do wielu łączy poprzez implementację list . Może więc po prostu zacznijmy i krótko omówmy te tematy przy pomocy odpowiednich scenariuszy i fragmentów kodu.
Czego się nauczysz:
testy beta to ostatnia faza procesu testowania.
- Wykonywacze JavaScript
- Dostęp do wielu elementów na liście
- Obsługa zdarzeń klawiatury i myszy
- Wniosek
- rekomendowane lektury
Wykonywacze JavaScript
Podczas automatyzacji scenariusza testowego istnieją pewne działania, które stają się nieodłączną częścią skryptów testowych.
Te działania mogą być:
- Kliknięcie przycisku, hiperłącza itp.
- Wpisywanie w polu tekstowym
- Przewijanie w pionie lub w poziomie, aż do wyświetlenia żądanego obiektu
- I wiele więcej
Z poprzednich samouczków jasno wynika, że najlepszym sposobem automatyzacji takich działań jest użycie poleceń Selenium.
Ale co, jeśli polecenia selenu nie działają?
Tak, jest absolutnie możliwe, że bardzo podstawowe i elementarne polecenia selenu nie działają w niektórych sytuacjach.
To powiedziawszy, aby móc rozwiązać taką sytuację, wrzucamy w to wykonawców JavaScript.
Co to są moduły wykonawcze JavaScript?
Interfejs JavascriptExecutor jest częścią org.openqa.selenium i implementuje klasę java.lang.Object. JavascriptExecutor przedstawia możliwości wykonywania JavaScript bezpośrednio w przeglądarce internetowej. Aby móc wykonać JavaScript, w jego implementacji przewidziano pewne mechanizmy w postaci metod wraz z określonym zestawem parametrów.
Metody
executeScript (skrypt String, args)
Jak sugeruje nazwa metody, wykonuje JavaScript w bieżącym oknie, alercie, ramce itp. (Oknie, na którym obecnie koncentruje się instancja WebDriver)
executeAsyncScript (skrypt String, args)
Jak sugeruje nazwa metody, wykonuje JavaScript w bieżącym oknie, alercie, ramce itp. (Oknie, na którym obecnie koncentruje się instancja WebDriver)
Parametry i instrukcja importu są wspólne dla obu metod modułu wykonawczego.
Parametry
Skrypt - skrypt do wykonania
Argument - parametry, których skrypt wymaga do wykonania (jeśli istnieją)
Oświadczenie importu
Aby móc używać JavascriptExecutors w naszych skryptach testowych, musimy zaimportować pakiet przy użyciu następującej składni:
import org.openqa.selenium.JavascriptExecutor;
Przykładowy kod
# 1) Kliknięcie elementu internetowego
// Locating the web element using id WebElement element = driver.findElement(By.id('id of the webelement')); // Instantiating JavascriptExecutor JavascriptExecutor js = (JavascriptExecutor)driver; // Clicking the web element js.executeScript('arguments[0].click();', element);
# 2) Wpisywanie w polu tekstowym
// Instantiating JavascriptExecutor JavascriptExecutor js = (JavascriptExecutor)driver; // Typing the test data into Textbox js.executeScript('document.getElementById(‘id of the element’).value=’test data’;”);
# 3) Przewijanie w dół, aż element sieciowy znajdzie się w widoku
WebElement element=driver.findElement(By.xpath('//input[contains(@value,'Save')]')); // Instantiating the javascriptExecutor and scrolling into the view in the single test step ((JavascriptExecutor)driver).executeScript('arguments[0].scrollIntoView(true);',element);
Możesz znaleźć różne inne sposoby pisania kodu dostępu do JavascriptExecutors.
Dostęp do wielu elementów na liście
Czasami możemy natknąć się na elementy tego samego typu, takie jak wiele hiperłączy, obrazów itp. Ułożonych w uporządkowaną lub nieuporządkowaną listę. Dlatego absolutnie sensowne jest zajmowanie się takimi elementami za pomocą pojedynczego fragmentu kodu i można to zrobić za pomocą listy WebElement. Zobacz poniższy zrzut ekranu, aby zrozumieć elementy, o których mówię.
pytania i odpowiedzi na rozmowę kwalifikacyjną usług internetowych
Na powyższym obrazku widzimy, że różni dostawcy usług należą do nieuporządkowanej listy. W ten sposób weryfikację klikalności i widoczności tych elementów można przeprowadzić za pomocą pojedynczego fragmentu kodu, korzystając z listy elementów.
Oświadczenie importu
Aby móc używać listy WebElement w naszych skryptach testowych, musimy zaimportować pakiet przy użyciu następującej składni:
import java.util.List;
Przykładowy kod
// Storing the list List serviceProviderLinks = driver.findElements(By.xpath('//div[@id='ServiceProvider']//ul//li')); // Fetching the size of the list int listSize = serviceProviderLinks.size(); for (int i=0; iIstnieją różne wymagania, na podstawie których listy można wykorzystać do weryfikacji elementów z odpowiednimi zmianami wdrożeniowymi.
Obsługa zdarzeń klawiatury i myszy
Obsługa zdarzeń klawiaturowych
Jak również powiedziano wcześniej, istnieje wiele sposobów radzenia sobie z tym samym stwierdzeniem problemu w różnych kontekstach.
Dlatego czasami pojawia się konieczność rozwiązania problemu poprzez zmianę konwencjonalnej strategii postępowania na bardziej zaawansowaną. Byłem świadkiem przypadków, w których nie mogłem poradzić sobie z alertami, wyskakującymi okienkami itp. Za pomocą poleceń selenu, dlatego musiałem zdecydować się na różne narzędzia java, aby sobie z tym poradzić za pomocą uderzeń klawiatury i zdarzeń myszy.
Klasa Robot jest jedną z takich opcji do wykonywania zdarzeń związanych z klawiaturą i myszami.
Zrozummy koncepcję za pomocą scenariusza i jego realizacji.
Scenariusz:
Skoncentrujmy się na sytuacji, w której na ekranie pojawia się niepotrzebne wyskakujące okienko, którego nie można zaakceptować ani odrzucić za pomocą interfejsu alertów, dlatego jedyną mądrą opcją jest zamknięcie okna za pomocą klawiszy skrótu - „Alt + spacja + C” . Zobaczmy, jak zamykamy wyskakujące okienko za pomocą Robot Class.
Przed rozpoczęciem implementacji należy zaimportować niezbędny pakiet, aby móc korzystać z klasy Robot w naszym skrypcie testowym.
Instrukcja importu
import java.awt.Robot;
Przykładowy kod
// Instantiating Robot class Robot rb =new Robot(); // Calling KeyPress event rb.keyPress(KeyEvent.VK_ALT); rb.keyPress(KeyEvent.VK_SPACE); rb.keyPress(KeyEvent.VK_C); // Calling KeyRelease event rb.keyRelease(KeyEvent.VK_C); rb.keyRelease(KeyEvent.VK_SPACE); rb.keyRelease(KeyEvent.VK_ALT);
Klasa Robot może być również używana do obsługi zdarzeń myszy, ale spójrzmy tutaj na możliwości selenu do obsługi zdarzeń myszy.
Obsługa zdarzeń myszy
WebDriver oferuje szeroką gamę narzędzi do interakcji, które użytkownik może wykorzystać do automatyzacji zdarzeń związanych z myszą i klawiaturą. Interfejs akcji jest jednym z takich narzędzi, które symuluje interakcje pojedynczego użytkownika.
W związku z tym bylibyśmy świadkami najechania kursorem myszy na menu rozwijane, które następnie otwiera listę opcji w następnym scenariuszu.
Scenariusz:
- Wskaźnik myszy na menu rozwijanym
- Kliknij jedną z pozycji w opcjach listy
Instrukcja importu
import org.openqa.selenium.interactions.Actions;
Przykładowy kod
// Instantiating Action Interface Actions actions= new Actions(driver); // howering on the dropdown actions.moveToElement(driver.findElement(By. id ('id of the dropdown'))).perform(); // Clicking on one of the items in the list options WebElement subLinkOption=driver.findElement(By.id('id of the sub link')); subLinkOption.click();
Wniosek
W tym samouczku omówiliśmy kilka zaawansowanych tematów związanych z wydajnym pisaniem skryptów i rozwiązywaniem scenariuszy, w których użytkownik musi obsługiwać zdarzenia myszy i klawiatury. Omówiliśmy również, jak przechowywać więcej niż jeden element sieciowy na liście. Mam nadzieję, że jeśli napotkasz te przeszkody, będziesz w stanie rozwiązać te problemy.
jak otworzyć słoik z java
Następny samouczek # 28 : W nadchodzącym samouczku z tej serii omówimy koncepcja testowania baz danych przy użyciu Selenium WebDriver . Bylibyśmy świadkami mechanizmu łączenia się z bazą danych, trafiania w zapytania selenowe i pobierania wyników poprzez Selenium WebDriver Code.
rekomendowane lektury
- Wprowadzenie do Selenium WebDriver - samouczek Selenium # 8
- Debugowanie skryptów Selenium za pomocą dzienników (samouczek Log4j) - samouczek Selenium # 26
- 30+ najlepszych samouczków dotyczących selenu: naucz się selenu z prawdziwymi przykładami
- Cucumber Selenium Tutorial: Integracja Cucumber Java Selenium WebDriver
- Jak zlokalizować elementy w przeglądarkach Chrome i IE do tworzenia skryptów selenium - Samouczek Selenium # 7
- Wdrożenie naszego pierwszego skryptu WebDriver - Selenium WebDriver Tutorial # 10
- WebDriver Cała konfiguracja i instalacja z Eclipse - samouczek Selenium # 9
- Tworzenie typów generycznych i zestawów testowych - samouczek Selenium # 22