Klasa robota w Selenium Sterownik internetowy

Czym jest klasa robota Selenium?

Klasa robota in Selenium sล‚uลผy do umoลผliwienia automatycznego testowania implementacji Java platforma. Generuje zdarzenia wejล›ciowe w systemach natywnych na potrzeby automatyzacji testรณw, samoczynnie uruchamiajฤ…cych siฤ™ wersji demonstracyjnych i innych aplikacji, w ktรณrych uลผytkownicy potrzebujฤ… kontroli nad myszฤ… i klawiaturฤ…. Klasa robota jest ล‚atwa do wdroลผenia i moลผna jฤ… ล‚atwo zintegrowaฤ‡ z zautomatyzowanym frameworkiem.

Dlaczego klasa robotรณw?

Klasa robota stosuje siฤ™ Selenium poniewaลผ w pewnym sensie Selenium testy automatyczne, uลผytkownicy muszฤ… mieฤ‡ kontrolฤ™ nad klawiaturฤ… lub myszฤ…, aby mรณc obsล‚ugiwaฤ‡ okna systemu operacyjnego, takie jak okna pobierania i drukowania, a takลผe aplikacje natywne, takie jak notatnik, kalkulator itp. Selenium Webdriver nie obsล‚uguje tych wyskakujฤ…cych okienek/aplikacji, wiฤ™c w Java w wersji 1.3 wprowadzono klasฤ™ robota, ktรณra obsล‚uguje wyskakujฤ…ce okienka/aplikacje systemu operacyjnego.

Dokumentacja klasy robota

Dokumentacja klasy robota in Selenium pomaga uลผytkownikom zrozumieฤ‡ podstawowฤ… definicjฤ™, skล‚adniฤ™ i zastosowanie wszystkich metod i funkcji dostฤ™pnych w klasie robotรณw Java Pakiet AWT. Uลผytkownicy mogฤ… przeglฤ…daฤ‡ dokumentacjฤ™ na stronie Urzฤ™dnik Oracle Zbieranie danych analitycznych o stronach internetowych lub aplikacjach (aby sprawdziฤ‡, czy strona dziaล‚a poprawnie lub ktรณre sekcje strony sฤ… najbardziej atrakcyjne dla odwiedzajฤ…cych).. 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) Plik src.zip znajdziesz w folderze JDK. Skopiuj src.zip i extracto samo w innym folderze lub katalogu (np. D: lub E: )

Dokumentacja klasy robota

Krok 2) ExtracPrzejdลบ do folderu src i przejdลบ do (ล›cieลผka do folderu src)/src/java/awt

Krok 3) Skopiuj bieลผฤ…cฤ… lokalizacjฤ™ folderu awt i otwรณrz wiersz poleceล„.

Krok 4) W cmd zmieล„ bieลผฤ…cฤ… lokalizacjฤ™ katalogu na folder awt i wpisz โ€žjavadoc *.javaโ€, jak pokazano poniลผej

Dokumentacja klasy robota

Poczekaj chwilฤ™, aลผ system przetworzy proces. Po zakoล„czeniu zobaczysz kilka plikรณw HTML w folderze awt.

Krok 5) Otwรณrz plik indeks.html

Dokumentacja klasy robota

Krok 6) Oto peล‚na dokumentacja pakietu awt. Na lewym pasku nawigacyjnym kliknij hiperล‚ฤ…cze โ€žRobotโ€ (patrz punkt 1 zaznaczony na obrazku poniลผej).

Dokumentacja klasy robota

Tutaj moลผesz takลผe zobaczyฤ‡ wszystkie metody i interfejsy klasy Robot (patrz 2 zaznaczone na powyลผszym obrazku).

Metody klas robotรณw w Selenium i uลผytkowania

Metod klasy Robot moลผna uลผywaฤ‡ do interakcji ze zdarzeniami klawiatury/myszy podczas automatyzacji przeglฤ…darki. Alternatywnie AutoIT moลผna uลผywaฤ‡, ale jego wadฤ… jest to, ลผe generuje plik wykonywalny (exe), ktรณry dziaล‚a tylko w systemie Windows, wiฤ™c nie jest to dobry wybรณr.

Niektรณre powszechnie i popularne metody klasy Robot podczas automatyzacji sieci:

Metoda 1: naciล›niฤ™cie klawisza():

robot.keyPress(KeyEvent.VK_DOWN): Ta metoda polega na naciล›niฤ™ciu klawisza strzaล‚ki w dรณล‚ na klawiaturze

Metoda 2: myszPress():

robot.mousePress(InputEvent.BUTTON3_DOWN_MASK): Ta metoda polega na naciล›niฤ™ciu prawego przycisku myszy.

Metoda 3: myszMove():

robot.mouseMove(point.getX(), point.getY()): Spowoduje to przesuniฤ™cie wskaลบnika myszy do okreล›lonych wspรณล‚rzฤ™dnych X i Y.

Metoda 4: keyRelease():

robot.keyRelease(KeyEvent.VK_DOWN): Ta metoda z klawiszem strzaล‚ki zwalniajฤ…cej klawiaturฤ™ w dรณล‚

Metoda 5: MouseRelease():

robot.mouseRelease(InputEvent.BUTTON3_DOWN_MASK): Ta metoda zwolni klikniฤ™cie prawym przyciskiem myszy

Przykล‚adowy kod do automatyzacji typowych przypadkรณw uลผycia przy uลผyciu klasy Robot

  • 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 instancjฤ™ klasy Robot w kodzie, powiedzmy Robot-robot = nowy robot()) . Klasa robota obecna w pakiecie AWT JDK.
Klawisz na klawiaturze Metoda wykonania
Aby nacisnฤ…ฤ‡ klawisz strzaล‚ki w dรณล‚ uลผywamy (robot.keyPress(KeyEvent.VK_DOWN))
Aby nacisnฤ…ฤ‡ klawisz TAB uลผywamy (robot.keyPress(KeyEvent.VK_TAB))
Aby nacisnฤ…ฤ‡ klawisz Enter uลผywamy (robot.keyPress(KeyEvent.VK_ENTER))

Przykล‚ad klasy robota w Selenium

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) throws AWTException, InterruptedException {	
           WebDriver driver = new FirefoxDriver();	
           driver.get("http://spreadsheetpage.com/index.php/file/C35/P10/"); // sample url	
           driver.findElement(By.xpath(".//a[@href=contains(text(),'yearly-calendar.xls')]")).click();	
           Robot robot = new Robot();  // Robot class throws AWT Exception	
           Thread.sleep(2000); // Thread.sleep throws InterruptedException	
           robot.keyPress(KeyEvent.VK_DOWN);  // press arrow down key of keyboard to navigate and select Save radio button	
           
           Thread.sleep(2000);  // sleep has only been used to showcase each event separately	
           robot.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);	
       // press enter key of keyboard to perform above selected action	
     }	 
 }

Obejrzyj ten film, aby zobaczyฤ‡ go w akcji

Jak wykonaฤ‡ kod klasy robota za pomocฤ… TestNG

Poniewaลผ znasz juลผ podstawowe metody klasy Robot, zapoznaj siฤ™ z kilkoma bardziej zล‚oลผonymi metodami โ€“

Zaล‚รณลผmy, ลผe nie chcesz uลผywaฤ‡ metoda klikniฤ™cia za klikniฤ™cie elementu internetowego.

W takich przypadkach moลผna skorzystaฤ‡ z metody MouseMove klasy Robot.

Krok 1) Metoda MouseMove przyjmuje wspรณล‚rzฤ™dne x i y jako parametry, takie jak robot.mouseMove(630, 420) gdzie 630 oznacza oล› x, a 420 oznacza oล› y. Zatem ta metoda przesunie wskaลบnik myszy z bieลผฤ…cej lokalizacji do wspomnianego punktu przeciฤ™cia x i y.

Krok 2) Nastฤ™pnie musimy nacisnฤ…ฤ‡ przycisk myszy. Moลผemy skorzystaฤ‡ z tej metody myszNaciล›nij lubiฤ‡ robot.mousePress(InputEvent.BUTTON1_DOWN_MASK) .

Krok 3) Po naciล›niฤ™ciu mysz musi zostaฤ‡ zwolniona. Moลผemy uลผyฤ‡ robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK), aby zwolniฤ‡ lewy przycisk myszy.

Uruchamianie kodu za pomocฤ… testNG:

Uruchamianie kodu za pomocฤ… Testowanie wymaga zaleลผnoล›ci maven od testNG lub biblioteki referencyjnej TestNG plik jar.

TestNG zaleลผnoล›ฤ‡ mavena:

<dependency>	
  <groupId>org.testng</groupId>
  <artifactId>testng</artifactId>	
  <version>6.1.1</version>	
</dependency>

Po dodaniu zaleลผnoล›ci maven lub pliku jar. Musisz zaimportowaฤ‡ adnotacjฤ™ Test testNG. Gdy wszystko bฤ™dzie gotowe, po prostu kliknij prawym przyciskiem myszy kod programu i kliknij Uruchom jako, a nastฤ™pnie kliknij TestNGโ€ฆ i zobaczysz, ลผe kod rozpocznie wykonywanie za pomocฤ… interfejsu API testNG.

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 {	

    @Test	
    public static void  execution() throws InterruptedException, AWTException {
        WebDriver driver = new FirefoxDriver();	
        driver.manage().window().maximize();	
        driver.get("http://spreadsheetpage.com/index.php/file/C35/P10/"); // sample url	
        Robot robot = new Robot();	
        robot.mouseMove(630, 420); // move mouse point to specific location	
        robot.delay(1500);        // delay is to make code wait for mentioned milliseconds before executing next step	
        robot.mousePress(InputEvent.BUTTON1_DOWN_MASK); // press left click	
        robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK); // release left click	
        robot.delay(1500);	
        robot.keyPress(KeyEvent.VK_DOWN); // press keyboard arrow key to select Save radio button	
        Thread.sleep(2000);	
        robot.keyPress(KeyEvent.VK_ENTER);	
        // press enter key of keyboard to perform above selected action	
    }	
}	

Obejrzyj ten film, aby zobaczyฤ‡ go w akcji

Korzyล›ci z klasy robota

  1. Klasa robota moลผe symulowaฤ‡ zdarzenie klawiatury i myszy
  2. Klasa Robot moลผe pomรณc w przesyล‚aniu/pobieraniu plikรณw podczas korzystania ze sterownika internetowego Selenium
  3. Robot Class moลผna ล‚atwo zintegrowaฤ‡ z obecnymi strukturami automatyzacji (sล‚owo kluczowe, oparte na danych lub hybrydowe)

Wady klasy robotรณw

Struktura robota ma kilka wad wymienionych poniลผej:

  1. Zdarzenie sล‚owa kluczowego/myszy bฤ™dzie dziaล‚aฤ‡ tylko w bieลผฤ…cej instancji okna. Zaล‚รณลผmy, ลผe kod wykonuje dowolne zdarzenie klasy robota i podczas wykonywania kodu uลผytkownik przeniรณsล‚ siฤ™ na inny ekran, na tym ekranie nastฤ…pi zdarzenie sล‚owa kluczowego/myszy.
  2. Wiฤ™kszoล›ฤ‡ metod, takich jak MouseMove, zaleลผy od rozdzielczoล›ci ekranu, wiฤ™c moลผe istnieฤ‡ ryzyko, ลผ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.

Gล‚รณwnym celem Robota jest wsparcie zautomatyzowanych testรณw Selenium w projekcie Java Platforma

Podsumuj ten post nastฤ™pujฤ…co: