Bu eğitimde, Selenium Webdriver'da Klavye ve Fare Olayını nasıl işlemeyi öğreneceğiz
Selenyumda Eylem Sınıfı
Selenium'daki Action Class, klavye ve fare olaylarını işlemek için selenyum tarafından sağlanan yerleşik bir özelliktir. Kontrol tuşuyla tıklama, sürükle ve bırak olayları ve daha pek çok olay gibi çeşitli işlemleri içerir. Eylem sınıfından bu işlemler, Selenium Webdriver'daki gelişmiş kullanıcı etkileşimi API'si kullanılarak gerçekleştirilir.
Klavye ve Fare Olaylarını Yönetme
Özel klavye ve fare olaylarının işlenmesi, Gelişmiş Kullanıcı Etkileşimleri API'sı kullanılarak yapılır . Bu olayları yürütürken gerekli olan Eylemleri ve Eylem sınıflarını içerir. Aşağıdakiler, Actions sınıfı tarafından sağlanan en yaygın kullanılan klavye ve fare olaylarıdır.
Yöntem | Açıklama |
---|---|
clickAndHold () | Mevcut fare konumunda tıklamalar (bırakmadan). |
contextClick () | Mevcut fare konumunda bağlam tıklama gerçekleştirir. (Sağ Tıklama Fare Eylemi) |
çift tıklama() | Mevcut fare konumunda çift tıklama gerçekleştirir. |
dragAndDrop (kaynak, hedef) | Kaynak öğenin konumunda tıklama ve basılı tutma gerçekleştirir, hedef öğenin konumuna hareket eder ve ardından fareyi serbest bırakır. Parametreler: fareyi taşımak ve fareyi bırakmak için.target öğesindeki düğmeyi taklit edecek kaynak öğesi. |
dragAndDropBy (kaynak, x uzaklığı, y uzaklığı) | Kaynak öğenin konumunda tıklama ve basılı tutma gerçekleştirir, belirli bir uzaklık kadar hareket eder ve ardından fareyi serbest bırakır. Parametreler : düğme aşağı benzetilecek kaynak eleman. XOffset- yatay hareket ofseti. YOffset- dikey hareket ofseti. |
keyDown (değiştirici_key) | Değiştirici bir tuşa basma işlemi gerçekleştirir. Değiştirici tuşu serbest bırakmaz - sonraki etkileşimler basılı tutulduğunu varsayabilir. Parametreler : modifier_key - değiştirici tuşlardan herhangi biri (Keys.ALT, Keys.SHIFT veya Keys.CONTROL) |
keyUp (değiştirici _key) | Bir tuş bırakma işlemi gerçekleştirir. Parametreler : modifier_key - değiştirici tuşlardan herhangi biri (Keys.ALT, Keys.SHIFT veya Keys.CONTROL) |
moveByOffset (x-ofset, y-ofset) | Verilen ofset ile fareyi mevcut konumundan (veya 0,0) hareket ettirir. Parametreler : x-ofset-yatay ofset. Negatif bir değer, fareyi sola hareket ettirmek anlamına gelir. Y-ofset-dikey uzaklık. Negatif bir değer, fareyi aşağı hareket ettirmek anlamına gelir. |
moveToElement (toElement) | Fareyi öğenin ortasına taşır. Parametreler : toElement- taşınacak öğe. |
serbest bırakmak() | Mevcut fare konumunda basılı sol fare düğmesini serbest bırakır |
sendKeys (onElement, charsequence) | Öğeye bir dizi tuş vuruşu gönderir. Parametreler : onElement - tuş vuruşlarını alacak olan öğe, genellikle bir metin alanı dizisi - gönderilecek tuş vuruşlarının sırasını temsil eden herhangi bir dize değeri |
Aşağıdaki örnekte, bir Mercury Tours'un tablo satırlarında fareyle üzerine gelmek için moveToElement () yöntemini kullanacağız. Aşağıdaki örneğe bakın.
Yukarıda gösterilen hücre, bir
Adım 1: Eylemler ve Eylem sınıflarını içe aktarın .
Adım 2: Yeni bir Actions nesnesi oluşturun.
Adım 3: Adım 2'deki Eylemler nesnesini kullanarak bir Eylemin örneğini oluşturun.
Bu durumda, moveToElement () yöntemini kullanacağız çünkü sadece fareyi "Ana Sayfa" bağlantısının üzerine getireceğiz. Build () yöntemi her zaman kullanılan son yöntemdir, böylece listelenen tüm eylemler tek bir adımda derlenecektir.
Adım 4: Adım 3'te tasarladığımız Action nesnesini çalıştırırken perform () yöntemini kullanın.
Aşağıda, fareyle üzerine gelmeden önce ve sonra
newproject paketi;import org.openqa.selenium. *;import org.openqa.selenium.firefox.FirefoxDriver;import org.openqa.selenium.interactions.Action;import org.openqa.selenium.interactions.Actions;public class PG7 {public static void main (String [] args) {String baseUrl = "http://demo.guru99.com/test/newtours/";System.setProperty ("webdriver.gecko.driver", "C: \\ geckodriver.exe");WebDriver sürücüsü = yeni FirefoxDriver ();driver.get (baseUrl);WebElement link_Home = driver.findElement (By.linkText ("Ana Sayfa"));WebElement td_Home = sürücü.findElement (Yazan.xpath ("// html / body / div"+ "/ table / tbody / tr / td"+ "/ table / tbody / tr / td"+ "/ table / tbody / tr / td"+ "/ tablo / gövde / tr"));Eylem oluşturucu = yeni Eylemler (sürücü);Eylem mouseOverHome = oluşturucu.moveToElement (link_Home).inşa etmek();String bgColor = td_Home.getCssValue ("arka plan rengi");System.out.println ("Fareyle üzerine gelmeden önce: + bgColor);mouseOverHome.perform ();bgColor = td_Home.getCssValue ("arka plan rengi");System.out.println ("Fareyle üzerine geldikten sonra: + bgColor);driver.close ();}}
Aşağıdaki çıktı, fareyle üzerine geldikten sonra arka plan renginin şeffaf hale geldiğini açıkça belirtir.
Bir Seri Çoklu Eylem Oluşturma
Eylem ve Eylemler sınıflarını kullanarak bir dizi eylem oluşturabilirsiniz . Seriyi build () yöntemiyle kapatmayı unutmayın. Aşağıdaki örnek kodu inceleyin.
public static void main (String [] args) {String baseUrl = "http://www.facebook.com/";WebDriver sürücüsü = yeni FirefoxDriver ();driver.get (baseUrl);WebElement txtUsername = driver.findElement (Yazan.id ("e-posta"));Eylem oluşturucu = yeni Eylemler (sürücü);Action seriesOfActions = oluşturucu.moveToElement (txtUsername).Tıklayın().keyDown (txtUsername, Keys.SHIFT).sendKeys (txtUsername, "merhaba").keyUp (txtUsername, Keys.SHIFT).doubleClick (txtUsername).contextClick ().inşa etmek();seriesOfActions.perform ();}
Özet
- Özel klavye ve fare olaylarının işlenmesi, AdvancedUserInteractions API kullanılarak yapılır.
- Sık kullanılan Anahtar Kelime ve Fare Olayları, doubleClick (), keyUp, dragAndDropBy, contextClick & sendKeys'dir.