Klasa Robot w Selenium Webdriver

Spisie treści:

Anonim

Klasa robota

Klasa Robot w Selenium służy do automatycznego testowania implementacji platformy Java. Generuje zdarzenia wejściowe w natywnych systemach do automatyzacji testów, samodzielnych demonstracji i innych aplikacji, w których użytkownicy potrzebują kontroli nad myszą i klawiaturą. Klasa Robot jest łatwa w implementacji i można ją łatwo zintegrować ze zautomatyzowanym frameworkiem.

Dlaczego klasa robotów?

Klasa Robot jest używana w Selenium, ponieważ w niektórych testach automatyzacji Selenium użytkownicy potrzebują kontroli nad klawiaturą lub myszą, aby wchodzić w interakcje z oknami systemu operacyjnego, takimi jak wyskakujące okienka pobierania, wyskakujące okienka drukowania itp. Oraz natywne aplikacje, takie jak notatnik, kalkulator itp. Selenium Webdriver nie może obsłużyć tych wyskakujących okienek / aplikacji, więc w Javie w wersji 1.3 wprowadzono klasę robota, która może obsługiwać wyskakujące okienka / aplikacje systemu operacyjnego.

W tym samouczku dowiesz się,

  • Korzyści z klasy robotów
  • Dokumentacja klasy robotów
  • Zrozumienie wewnętrznych metod i zastosowań klasy Robot
  • Jak wykonać kod klasy robota za pomocą narzędzia testNG
  • Wady klasy robotów

Korzyści z klasy robotów

  1. Klasa Robot może symulować zdarzenie klawiatury i myszy
  2. Robot Class może pomóc w wysyłaniu / pobieraniu plików przy użyciu sterownika sieciowego selenu
  3. Robot Class można łatwo zintegrować z aktualną platformą automatyzacji (słowo kluczowe, oparte na danych lub hybrydowe)

Co to jest dokumentacja klasy robotów?

Robot klasy Dokumentacja w Selen pomaga użytkownikom zrozumieć podstawową definicję, składnia i wykorzystanie wszystkich dostępnych metod i funkcji w klasie robota w pakiecie Java AWT. Użytkownicy mogą przeglądać dokumentację w oficjalnej witrynie Oracle. Użytkownicy mogą również samodzielnie tworzyć dokumentację na swoim komputerze lokalnym.

Aby utworzyć dokumentację na komputerze lokalnym, wykonaj poniższe czynności:

Krok 1) W folderze JDK znajdziesz plik src.zip. Skopiuj plik src.zip i rozpakuj go w innym folderze lub katalogu (powiedz D: lub E:)

Krok 2) Wyodrębnij folder src i przejdź do (ścieżka do folderu src) / src / java / awt

Krok 3) Skopiuj bieżącą lokalizację folderu awt i otwórz wiersz polecenia.

Krok 4) W cmd zmień bieżącą lokalizację katalogu na folder awt i wpisz „javadoc * .java”, jak pokazano poniżej

Poczekaj chwilę, aż system się przetworzy, po zakończeniu zobaczysz kilka plików HTML w folderze awt.

Krok 5) Otwórz plik index.html

Krok 6) Oto pełna dokumentacja pakietu awt, na lewym pasku nawigacji kliknij hiperłącze „Robot” (patrz 1 zaznaczone na poniższym obrazku).

Tutaj możesz również zobaczyć wszystkie metody i interfejsy klasy Robot (patrz 2 zaznaczone na powyższym obrazku).

Zrozumienie wewnętrznych metod i zastosowań klasy Robot

Metody klasy Robot mogą być używane do interakcji ze zdarzeniami klawiatury / myszy podczas wykonywania automatyzacji przeglądarki. Alternatywnie można użyć AutoIT, ale jego wadą jest to, że generuje plik wykonywalny (exe), który będzie działał tylko w systemie Windows, więc nie jest dobrym rozwiązaniem.

Niektóre powszechnie i popularne metody Robot Class podczas automatyzacji sieci:

  • keyPress (): Przykład: robot.keyPress (KeyEvent.VK_DOWN): Ta metoda z naciśnięciem klawisza strzałki w dół na klawiaturze
  • mousePress (): Przykład : robot.mousePress (InputEvent.BUTTON3_DOWN_MASK): Ta metoda spowoduje kliknięcie prawym przyciskiem myszy.
  • mouseMove (): Przykład : robot.mouseMove (point.getX (), point.getY ()): Spowoduje to przesunięcie wskaźnika myszy do określonych współrzędnych X i Y.
  • keyRelease (): Przykład: robot.keyRelease (KeyEvent.VK_DOWN): Ta metoda z klawiszem zwolnienia strzałki w dół na klawiaturze
  • mouseRelease (): Przykład: robot.mouseRelease (InputEvent.BUTTON3_DOWN_MASK): Ta metoda zwolni prawy przycisk myszy

Przykładowy kod do automatyzacji typowych przypadków użycia za pomocą Robot Class

  • Weźmy przykład witryny internetowej http://spreadsheetpage.com/index.php/file/C35/P10/, w której po kliknięciu elementu internetowego ( .//a[@href=contains(text(),'yearly- calendar.xls '] ) pojawi się wyskakujące okienko pobierania systemu operacyjnego.
  • Aby sobie z tym poradzić, używamy klasy Robot (tworząc w kodzie instancję klasy Robot, powiedz Robot robot = new Robot () ). Klasę robotów prezentujemy w pakiecie AWT JDK.
  • Aby nacisnąć klawisz strzałki w dół na klawiaturze, używamy ( robot.keyPress (KeyEvent.VK_DOWN))
  • Aby nacisnąć klawisz TAB na klawiaturze (używamy robot.keyPress (KeyEvent.VK_TAB))
  • Aby nacisnąć klawisz Enter, używamy ( robot.keyPress (KeyEvent.VK_ENTER)).

Oto przykładowy kod

import java.awt.AWTException;import java.awt.Robot;import java.awt.event.KeyEvent;import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.firefox.FirefoxDriver;class Excercise1 {public static void main (String [] args) rzuca AWTException, InterruptedException {Sterownik WebDriver = nowy FirefoxDriver ();driver.get („http://spreadsheetpage.com/index.php/file/C35/P10/”); // przykładowy adres URLdriver.findElement (By.xpath (".// a [@ href = zawiera (text (), 'yearly-calendar.xls')]")). click ();Robot robot = nowy Robot (); // Klasa Robot zgłasza wyjątek AWTThread.sleep (2000); // Thread.sleep zgłasza InterruptedExceptionrobot.keyPress (KeyEvent.VK_DOWN); // naciśnij klawisz strzałki w dół na klawiaturze, aby nawigować i wybierz opcję ZapiszThread.sleep (2000); // uśpienie zostało użyte tylko do pokazania każdego wydarzenia osobnorobot.keyPress (KeyEvent.VK_TAB);Thread.sleep (2000);robot.keyPress (KeyEvent.VK_TAB);Thread.sleep (2000);robot.keyPress (KeyEvent.VK_TAB);Thread.sleep (2000);robot.keyPress (KeyEvent.VK_ENTER);// naciśnij klawisz Enter na klawiaturze, aby wykonać powyższą akcję}} 

Obejrzyj ten film, aby zobaczyć, jak to działa

Jak wykonać kod klasy robota za pomocą TestNG

Ponieważ teraz znasz podstawowe metody klasy robotów, przyjrzyjmy się kilku bardziej złożonym metodom -

Załóżmy, że nie chcesz używać metody Click do klikania elementu WWW.

W takich przypadkach można skorzystać z metody mouseMove klasy Robot.

Krok 1) metoda mouseMove przyjmuje współrzędne xiy jako parametry, takie jak robot.mouseMove (630, 420), gdzie 630 oznacza oś x, a 420 oznacza oś y. Tak więc ta metoda przesunie wskaźnik myszy z bieżącej lokalizacji do wspomnianego punktu przecięcia xiy.

Krok 2) Następnie musimy nacisnąć przycisk myszy. Możemy użyć metody mousePress jak robot.mousePress (InputEvent.BUTTON1_DOWN_MASK) .

Krok 3) Po naciśnięciu mysz musi zostać zwolniona. Możemy użyć robota.mouseRelease (InputEvent.BUTTON1_DOWN_MASK ), aby zwolnić lewy przycisk myszy.

Uruchamianie kodu przy użyciu testNG:

Uruchamianie kodu przy użyciu Testng wymaga zależności maven od testNG lub biblioteki, do której odwołuje się plik jar TestNG.

Zależność TestNG Maven:

 org.testng  testng  6.1.1  

Po dodaniu zależności maven lub pliku jar. Musisz zaimportować adnotację testową testNG. Po zakończeniu kliknij prawym przyciskiem myszy kod programu i kliknij Uruchom jako, a następnie kliknij TestNG

… A zobaczysz, że kod rozpocznie wykonywanie przy użyciu testNG API.

Oto kod

import java.awt.AWTException;import java.awt.Robot;import java.awt.event.InputEvent;import java.awt.event.KeyEvent;import org.openqa.selenium.WebDriver;import org.openqa.selenium.firefox.FirefoxDriver;import org.testng.annotations.Test;public class Excersise1 {@Testpublic static void Execution () rzuca InterruptedException, AWTException {Sterownik WebDriver = nowy FirefoxDriver ();driver.manage (). window (). maximize ();driver.get („http://spreadsheetpage.com/index.php/file/C35/P10/”); // przykładowy adres URLRobot robot = nowy Robot ();robot.mouseMove (630, 420); // przesuń kursor myszy w określone miejscerobot.delay (1500); // opóźnienie polega na tym, aby kod czekał przez wspomniane milisekundy przed wykonaniem następnego krokurobot.mousePress (InputEvent.BUTTON1_DOWN_MASK); // naciśnij lewy przycisk myszyrobot.mouseRelease (InputEvent.BUTTON1_DOWN_MASK); // zwolnij lewy przycisk myszyrobot.delay (1500);robot.keyPress (KeyEvent.VK_DOWN); // naciśnij klawisz strzałki na klawiaturze, aby wybrać przycisk opcji ZapiszThread.sleep (2000);robot.keyPress (KeyEvent.VK_ENTER);// naciśnij klawisz Enter na klawiaturze, aby wykonać powyższą akcję}}

Obejrzyj ten film, aby zobaczyć, jak to działa

Wady klasy robotów

Konstrukcja robota ma kilka wad wymienionych poniżej:

  1. Zdarzenie ze słowem kluczowym / myszą będzie działać tylko na bieżącej instancji Window. Np. Załóżmy, że kod wykonuje dowolne zdarzenie klasy robota, a podczas wykonywania kodu użytkownik przeniósł się na inny ekran, wtedy na tym ekranie pojawi się zdarzenie słowa kluczowego / myszy.
  2. Większość metod, takich jak mouseMove, zależy od rozdzielczości ekranu, więc może istnieć szansa, że ​​kod działający na jednym komputerze może nie działać na innym.

Podsumowanie

Klasa Robot w pakiecie AWT służy do generowania zdarzeń klawiatury / myszy w celu interakcji z oknami systemu operacyjnego i aplikacjami natywnymi.

Podstawowym celem programu Robot jest obsługa projektów testów automatycznych selenu, budowanych na platformie Java

Ten artykuł jest autorstwa Ramandeep Singha, który jest inżynierem automatyzacji testów w wiodącej firmie MNC.