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: )
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
Poczekaj chwilฤ, aลผ system przetworzy proces. Po zakoลczeniu zobaczysz kilka plikรณw HTML w folderze awt.
Krok 5) Otwรณrz plik indeks.html
Krok 6) Oto peลna dokumentacja pakietu awt. Na lewym pasku nawigacyjnym kliknij hiperลฤ cze โRobotโ (patrz punkt 1 zaznaczony na obrazku poniลผej).
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
- Klasa robota moลผe symulowaฤ zdarzenie klawiatury i myszy
- Klasa Robot moลผe pomรณc w przesyลaniu/pobieraniu plikรณw podczas korzystania ze sterownika internetowego Selenium
- 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:
- 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.
- 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




