robot class selenium webdriver with java
Bu Öğretici, Java'da Robot Sınıfının Kullanımlarını, Örneklerini ve İşlevlerini ve Selenium Framework ile Entegrasyonunu açıklar:
Robot Java bir Robot sınıf Java AWT paketi. Genellikle manuel olarak yaptığımız gerçek zamanlı klavye ve fare işlemlerini simüle etmek için kullanılır.
Java'da Robot Sınıfının temel amacı otomasyondur. İşin güzelliği, erişimini artırmak için mevcut otomasyon çerçevesine kolayca entegre edilebilmesidir.
Ne öğreneceksin:
Java'da Robot Sınıfı
Bu eğitimde, Java'da Robot Sınıfı ile Selenium entegrasyonu hakkında bilgi edineceğiz, ancak genel olarak Java Robot Sınıfı, Java üzerine kurulu herhangi bir otomasyon çerçevesinde kullanılabilir.
Robot Sınıfının İşlevselliklerinin Simülasyonu
Java'da Robot Sınıfının pek çok işlevi vardır ve bunlarla ilişkili bazı yöntemler aşağıda listelenmiştir:
# 1) Klavye İşlevleri
Robot sınıfının klavye işlevleri, genellikle klavyelerde bulunan farklı tuşların simülasyonu ve işlemleriyle ilgilidir.
Genel void tuşu: (int tuş kodu)
Bu işlev, giriş parametresi tuşuna basar. İşlemi tamamlamak için anahtar bırakma yöntemi kullanılmalıdır.
Aşağıdaki kod parçacığını izleyin:
r.keyPress(KeyEvent.VK_CONTROL); r.keyPress(KeyEvent.VK_V);
Burada, yukarıdaki kod parçacığında sadece CTRL + V tuşlarına basıyoruz. KeyEvent yöntemi, klavyemizde bulunan diğer tuşlarla ilişkilidir. Hepsini deneyebilirsiniz.
Genel void keyRelease (int anahtar kodu)
Bu yöntem, giriş parametresi anahtarını serbest bırakır. Bu, tuşa basma yönteminin işlem sonrası işlemidir.
Aşağıdaki kod parçacığını izleyin:
r.keyRelease(KeyEvent.VK_V); r.keyRelease(KeyEvent.VK_CONTROL);
Yukarıdaki kod parçacığında, sadece CTRL + V'yi yayınlıyoruz. Yukarıda belirtildiği gibi, KeyEvent yöntemi de klavyemizde bulunan diğer tuşlarla ilişkilidir. Hepsini deneyebilirsiniz.
# 2) Fare İşlevleri
Fare işlevleri, farenin farklı işlemlerini simüle etmekle ilgilenir.
Genel void mouseMove (int x, int y)
Burada iki parametre ekranın koordinatlarını belirler. Koordinatları verdiğimizde, fare ekranın verilen koordinatlarının noktasına hareket eder.
Verilen kod pasajını izleyin:
robot.mouseMove (0, 900);
Burada x parametresinin konumu 0 ve y parametresi 900'dür. Yani fare o noktaya hareket edecektir. Ekranın çeşitli konumlarına geçmek için bir hata ve deneme yöntemi yapılabilir.
Genel void mousePress (int düğmeleri)
Net bir kavrayış elde etmek için bu işlevselliği keyPress işlevleriyle hayal edebilirsiniz. Bu yöntem mousePress işlevlerini simüle eder.
Aşağıdaki kod parçacığını izleyin:
robot.mousePress(InputEvent.BUTTON1_DOWN_MASK); //associated with mouse left click robot.mousePress(InputEvent.BUTTON2_DOWN_MASK); //associated with mouse middle click robot.mousePress(InputEvent.BUTTON3_DOWN_MASK); //associated with mouse right click
Genel void mouseRelease (int düğmeleri)
Net bir kavrayış elde etmek için bu işlevselliği keyPress işlevleriyle hayal edebilirsiniz. Bu yöntem mousePress işlevlerini simüle eder.
Aşağıdaki kod parçacığını izleyin:
robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK); //associated with mouse left click robot.mouseRelease(InputEvent.BUTTON2_DOWN_MASK); //associated with mouse middle click robot.mouseRelease(InputEvent.BUTTON3_DOWN_MASK); //associated with mouse right click
Not :Keşif için kullanılabilecek birkaç başka yöntem vardır. Ancak yukarıdaki yöntemler en sık kullanılanlardır. Ancak, diğer yöntemleri keşfetmek için Oracle belgelerinde Robot Java sınıfı aranabilir.
Java'da Robot Sınıfının Kullanımı
Bir otomasyon çerçevesinde işlevselliği etkili bir şekilde geliştirmek için Java'daki Robot Sınıfını ne zaman ve nerede kullanabiliriz?
Hepimizin bildiği gibi, Selenium web uygulamalarını otomatikleştirmek için kullanılabilir. Selenium'daki bu web uygulamaları, web sayfasındaki konumu belirlemek ve buna göre çalışmak için web uygulamasının temelindeki web nesnesini (konum belirleyicileri) kullanır. Şimdi bazı durumlarda, Windows işletim sisteminde otomatikleştirme yaparken Windows kimlik doğrulama açılır penceresini veya diğer herhangi bir pencere açılır penceresini işlememiz gerektiğini görüyoruz.
Selenium, Windows eylemlerini otomatikleştiremez ancak görevi tamamlamak için Java'daki Robot Sınıfını kullanabiliriz.
Java Robot Sınıfı Örnekleri
Örnek 1: Bazı Windows işlevlerini Otomatikleştirmek için Robot Sınıfını Kullanma
Bazen tüm web uygulamasının herhangi bir küçük parçası / modülü flash olarak tasarlanabilir. Bu bölümü halletmek için Robot sınıfını kullanabiliriz. Web nesneleri flash ile tasarlanan kısım için gizli kaldığından.
e-posta şifre kırıcı çevrimiçi hack aracı
Java'da Robot Sınıfı kullanılarak otomatikleştirilebilen bir diğer önemli özellik, bazen web uygulamalarına gömülü kalan Zengin Metin Düzenleyicileridir. RTF editörlerinde bu sınıfı kullanarak otomatikleştirmesi oldukça kolay olan birkaç operasyonel işlev vardır.
Örnek 2: RTF alanlarını otomatikleştirmek için Robot Sınıfını kullanma
Not :Piyasada başka açık kaynaklı araçlar da var. Otomatik BT (Windows GUI'yi otomatikleştirmek için özel olarak tasarlanmıştır), Sikuli (görüntü işleme aracı), vb.
Bu doğrudur, ancak Java'daki Robot Sınıfı JDK ile birlikte gelir. Bu nedenle, yüklemek için başka bir araca ihtiyacımız yok, Java tabanlı bir otomasyon çerçevesi kullanılıyorsa bu, doğrudan bir avantajdır.
RTF Alanlarını Otomatikleştirme
Örnek Resim:
Örnek Snippet:
import java.awt.AWTException; import java.awt.Robot; import java.awt.Toolkit; import java.awt.datatransfer.Clipboard; import java.awt.datatransfer.StringSelection; import java.awt.event.KeyEvent; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; public class javainteraction { public void seleniumwithjava() throws AWTException, InterruptedException { System.setProperty('webdriver.chrome.driver', 'D://chromedriver//chromedriver.exe'); WebDriver driver =new ChromeDriver(); driver.get('https://www.tinymce.com' ); driver.manage().window().maximize(); driver.findElement(By.xpath('(//div(contains(@aria-label,'Bold'))//i(contains(@class,'mce-i-bold')))(1)')).click(); Robot r = new Robot(); String text = 'Welcome to the world of automation.'; StringSelection stringSelection = new StringSelection(text); Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard(); clipboard.setContents(stringSelection, stringSelection); r.keyPress(KeyEvent.VK_CONTROL); r.keyPress(KeyEvent.VK_V); r.keyRelease(KeyEvent.VK_V); r.keyRelease(KeyEvent.VK_CONTROL); Thread.sleep(1000); String text1 = 'Hope you enjoy This'; StringSelection stringSelection1 = new StringSelection(text1); Clipboard clipboard1 = Toolkit.getDefaultToolkit().getSystemClipboard(); clipboard1.setContents(stringSelection1, stringSelection1); r.keyPress(KeyEvent.VK_CONTROL); r.keyPress(KeyEvent.VK_V); r.keyRelease(KeyEvent.VK_V); r.keyRelease(KeyEvent.VK_CONTROL); driver.findElement(By.xpath('(//div(contains(@aria-label,'Italic'))//i(contains(@class,'mce-i-italic')))(1)')).click(); } public static void main(String args()) throws AWTException, InterruptedException { javainteraction j1 = new javainteraction(); j1.seleniumwithjava(); } }
Burada, RTF editörlerinin iki işlevi, kalın ve italik simge kullanılarak otomatikleştirilmiştir.
Bazı Windows İşlevlerini Otomatikleştirme
import java.awt.AWTException; import java.awt.Robot; import java.awt.event.InputEvent; public class RobotJ { public static void main(String() args) { // TODO Auto-generated method stub Robot robot; try { robot = new Robot(); robot.mouseMove(0, 900); robot.delay(1000); robot.mousePress(InputEvent.BUTTON1_MASK); robot.mouseRelease(InputEvent.BUTTON1_MASK); robot.delay(1000); robot.mouseMove(300, 490); robot.mousePress(InputEvent.BUTTON3_DOWN_MASK); robot.mouseRelease(InputEvent.BUTTON3_DOWN_MASK); robot.delay(1000); robot.mouseMove(400, 690); robot.delay(1000); robot.mousePress(InputEvent.BUTTON1_MASK); robot.mouseRelease(InputEvent.BUTTON1_MASK); robot.delay(1000); robot.mouseMove(1300, 150); } catch (AWTException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
Bu kod parçacığı, genellikle, başlangıç simgesinden sistem yapılandırmasını görüntülemeye doğru başlama ile ilgilidir. Benzer bir kavramı kullanarak, bir web sayfasında işlem başlatırken veya işlem arasında pencerelerin pop-up oluşturmasını da ele alabilir.
Robot Java'yı Mevcut Java + Selenium Çerçevesine Dahil Etmek İçin İpuçları
Şimdi, yukarıda gösterilen kod parçasını nasıl değiştireceğimizi göreceğiz, böylece aynısını mevcut bir Selenium + Java çerçevesine yerleştirebiliriz.
Lütfen bunun bir kavram olduğunu ve aynı şeyi başarmanın birçok yolu olduğunu unutmayın. Projeden projeye değişebilen iş ihtiyaçlarını karşılamak için bu konsepti daha da genişletebilir / değiştirebiliriz.
İlk olarak, mevcut tüm ortak veya Robot sınıflarını barındıracak bir sınıf oluşturun, böylece gerektiğinde bu yöntemleri test senaryoları yazdığımız diğer sınıflarda kullanabiliriz.
Aşağıdaki kod parçacıkları bunu göstermektedir:
import java.awt.AWTException; import java.awt.Robot; import java.awt.event.InputEvent; import java.awt.event.KeyEvent; public class CommonRobotMethods { Robot robot; int a= 0,b= 900; //This value can be exported from property file or excel sheet instead of direct input to the code public void LeftClickMouse() throws AWTException { robot = new Robot(); robot.mousePress(InputEvent.BUTTON1_DOWN_MASK); robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK); } public void MiddleClickMouse() throws AWTException { robot = new Robot(); robot.mousePress(InputEvent.BUTTON2_DOWN_MASK); robot.mouseRelease(InputEvent.BUTTON2_DOWN_MASK); } public void RightClickMouse() throws AWTException { robot = new Robot(); robot.mousePress(InputEvent.BUTTON2_DOWN_MASK); robot.mouseRelease(InputEvent.BUTTON2_DOWN_MASK); } public void MouseMove(int x, int y) throws AWTException { robot = new Robot(); robot.mouseMove(x,y); } public void KeyPressCTRL() throws AWTException { robot = new Robot(); robot.keyPress(KeyEvent.VK_CONTROL); } public void KeyReleaseCTRL() throws AWTException { robot = new Robot(); robot.keyRelease(KeyEvent.VK_CONTROL); } public void KeyPressV() throws AWTException { robot = new Robot(); robot.keyPress(KeyEvent.VK_V); } public void KeyReleaseV() throws AWTException { robot = new Robot(); robot.keyRelease(KeyEvent.VK_V); } public String RobotJavaMethods(String utilityMethod) { switch(utilityMethod) { case 'LeftClickMouse': try { LeftClickMouse(); } catch(AWTException e) { //Write any thing to track the error } break; case 'MiddleClickMouse': try { MiddleClickMouse(); } catch(AWTException e) { //Write any thing to track the error } break; case 'RightClickMouse': try { RightClickMouse(); } catch(AWTException e) { //Write any thing to track the error } break; case 'MouseMove': try { MouseMove(a,b); } catch(AWTException e) { //Write any thing to track the error } break; case 'KeyPressCTRL': try { KeyPressCTRL(); } catch(AWTException e) { //Write any thing to track the error } break; case 'KeyReleaseCTRL': try { KeyReleaseCTRL(); } catch(AWTException e) { //Write any thing to track the error } break; case 'KeyPressV': try { KeyPressV(); } catch(AWTException e) { //Write any thing to track the error } break; case 'KeyReleaseV': try { KeyReleaseV(); } catch(AWTException e) { //Write any thing to track the error } break; default: System.out.println('UnHandled error'); } return utilityMethod; } }
Burada birkaç yöntem aldık, proje ihtiyaçlarına göre benzer şekilde başka yöntemler de eklenebilir.
Her yöntem bir anahtar durumuna eklenir, böylelikle case anahtar sözcüğü gerektiği zaman ve her yerde kullanılabilir.
Şimdi RTF düzenleyicisini otomatikleştirmek için yazdığımız kodu nasıl dönüştürebileceğimize bakalım:
Bunu anlamak için aşağıdaki kod parçacığına bakın:
import java.awt.Robot; import java.awt.Toolkit; import java.awt.datatransfer.Clipboard; import java.awt.datatransfer.StringSelection; import java.awt.event.KeyEvent; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; public class seleniumFramework { public void actualOperationalMethod() throws InterruptedException { CommonRobotMethods cm = new CommonRobotMethods(); System.setProperty('webdriver.chrome.driver', UtilityPathandLoc.Chromedriver_path); WebDriver driver =new ChromeDriver(); driver.get(UtilityPathandLoc.APPURL); driver.manage().window().maximize(); driver.findElement(By.xpath(UtilityPathandLoc.Bold_loc)).click(); String text = UtilityPathandLoc.First_input; StringSelection stringSelection = new StringSelection(text); Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard(); clipboard.setContents(stringSelection, stringSelection); cm.RobotJavaMethods('KeyPressCTRL'); cm.RobotJavaMethods('KeyPressV'); cm.RobotJavaMethods('KeyReleaseV'); cm.RobotJavaMethods('KeyReleaseCTRL'); Thread.sleep(1000); String text1 = UtilityPathandLoc.Second_input; StringSelection stringSelection1 = new StringSelection(text1); Clipboard clipboard1 = Toolkit.getDefaultToolkit().getSystemClipboard(); clipboard1.setContents(stringSelection1, stringSelection1); cm.RobotJavaMethods('KeyPressCTRL'); cm.RobotJavaMethods('KeyPressV'); cm.RobotJavaMethods('KeyReleaseV'); cm.RobotJavaMethods('KeyReleaseCTRL'); driver.findElement(By.xpath(UtilityPathandLoc.Italics_loc)).click(); } public static void main(String args()) { seleniumFramework s1 = new seleniumFramework(); try { s1.actualOperationalMethod(); } catch (InterruptedException e) { e.printStackTrace(); } } }
SeleniumFramework sınıfı içinde CommonRobotMethods sınıfının nesnesini oluşturuyor ve CommonRobotMethods sınıfında tanımlanan yöntemlere üzerinden erişiyoruz. CommonRobotMethods sınıfında tanımlanan anahtar sözcükleri değiştirin.
Burada, dışsallaştırılabilen tüm girişleri yazmak için bir arayüz oluşturduk. Ancak, konfor seviyelerine veya iş ihtiyaçlarına göre excel / properties veya arayüze bölünebilir ve yazılabilir.
public interface UtilityPathandLoc { String APPURL= 'https://www.tinymce.com'; String Chromedriver_path = 'D://chromedriver//chromedriver.exe'; String Bold_loc = '(//div(contains(@aria-label,'Bold'))//i(contains(@class,'mce-i-bold')))(1)'; String Italics_loc = '(//div(contains(@aria-label,'Italic'))//i(contains(@class,'mce-i-italic')))(1)'; String First_input = 'Welcome to the world of automation.'; String Second_input = 'Hope you enjoy This'; }
Sonuç
Umarım, Robot Sınıfını bir Selenium + Java çerçevesinde nasıl kullanacağınız artık açıktır. Herkesin bu makaleyi kavramı öğrenmede ilginç ve yararlı bulmasını diliyoruz.
Önerilen Kaynaklar
- Salatalık Selenium Eğitimi: Salatalık Java Selenium WebDriver Entegrasyonu
- Java Temelleri: Java Sözdizimi, Java Sınıfı ve Temel Java Kavramları
- Selenium'da Java'nın Temellerini Örneklerle Keşfedin
- Selenium'un JMeter ile entegrasyonu
- Örneklerle Java Tarayıcı Sınıfı Eğitimi
- Java Dizi Sınıfı Eğitimi - Örneklerle java.util.Arrays Sınıfı
- Java Vektör Nedir | Örneklerle Java Vektör Sınıfı Eğitimi
- Java Arayüzü ve Örneklerle Soyut Sınıf Eğitimi