Aksiyon Sınıfı Selenium

⚡ Akıllı Özet

Aksiyon Sınıfı Selenium Gelişmiş Kullanıcı Etkileşimleri API'si aracılığıyla fareyle üzerine gelme, sürükle bırak, sağ tıklama ve tuş kombinasyonları gibi gelişmiş klavye ve fare olaylarını işler. Bu eğitim, Eylemler ve Eylem sınıflarını, temel yöntemleri ve birden fazla etkileşimin tek bir dizi halinde nasıl zincirleneceğini açıklar.

  • 🖱️ Temel Amaç: Actions sınıfı, temel click() yönteminin yapamadığı bileşik fare ve klavye olaylarını otomatikleştirir.
  • 🔑 İki Sınıf: Eylemler etkileşimi oluşturur; Eylem, yürütülecek derlenmiş diziyi saklar.
  • 🧱 Önce Oluştur, Sonra Uygula: Metotları zincirleyin, build() ile bitirin ve perform() ile çalıştırın.
  • ???? Anahtar Yöntemler: moveToElement(), dragAndDrop(), keyDown()/keyUp(), contextClick() ve sendKeys().
  • 🤖 Yapay Zeka Etkinleştirme: Yapay zekâ asistanları, etkileşim testleri sırasında Action sınıfı kodu oluşturur ve konum belirleyicileri kendi kendine onarır.

Fareyle üzerine gelindiğinde görüntülenen çıktı

Aksiyon Sınıfı Selenium

Aksiyon Sınıfı Selenium Klavye ve fare olaylarını işlemek için yerleşik bir özelliktir. Kontrol tuşuyla birden fazla tıklama, sürükle-bırak ve daha birçok işlemi destekler. Bu işlemler, Gelişmiş Kullanıcı Etkileşimleri API'si kullanılarak gerçekleştirilir. Selenium WebDriver.

Klavye ve Fare Olaylarını Yönetme

Özel klavye ve fare olaylarının işlenmesi şu şekilde yapılır: Gelişmiş Kullanıcı Etkileşimleri API'sı. İçerir İşlemler hem de Action Bu olayları gerçekleştirmek için gereken sınıflar şunlardır: Actions sınıfı tarafından sağlanan en yaygın kullanılan klavye ve fare olayları aşağıda listelenmiştir.

Yöntem Açıklama
tıklayınVeHold() Geçerli fare konumundaki tıklamalar (bırakmadan).
bağlam Tıklaması() Farenin bulunduğu konumda sağ tıklama (bağlantı tuşuyla tıklama) işlemi gerçekleştirir.
çiftTıklama() Mevcut fare konumunda çift tıklama gerçekleştirir.
dragAndDrop(kaynak, hedef) Kaynak öğeye tıklayıp basılı tutar, hedef öğeye geçer ve ardından fareyi bırakır. Parametreler: kaynak (üzerine basılacak öğe), hedef (bırakılacak öğe).
dragAndDropBy(kaynak, x uzaklığı, y uzaklığı) Kaynak öğeye tıklayıp basılı tutar, belirli bir mesafede hareket ettirir ve ardından bırakır. Parametreler: kaynak, xOffset (yatay), yOffset (dikey).
keyDown(modifier_key) Bir değiştirici tuşa basılı tutar ve bırakmaz; böylece sonraki etkileşimler tuşun basılı kaldığını varsayar. Parametre: bir değiştirici tuş (Keys.ALT, Keys.SHIFT veya Keys.CONTROL).
keyUp(modifier_key) Bir değiştirici tuşu bırakır. Parametre: bir değiştirici tuş (Keys.ALT, Keys.SHIFT veya Keys.CONTROL).
moveByOffset(x-offset, y-offset) Fareyi mevcut konumundan (veya 0,0 noktasından) verilen mesafe kadar hareket ettirir. Negatif x sola, negatif y yukarı hareket ettirir.
moveToElement(toElement) Fareyi öğenin ortasına taşır. Parametre: Taşınacak öğe.
serbest bırakmak() Basılı olan sol fare düğmesini mevcut konumda bırakır.
sendKeys(onElement, karakter dizisi) Bir öğeye bir dizi tuş vuruşu gönderir. Parametreler: onElement (genellikle bir metin alanı), charsequence (gönderilecek tuş vuruşları).

Aşağıdaki örnekte, moveToElement() fareyi birinin üzerine getirme yöntemi Mercury Tur tablosu satırları.

Klavye ve Fare Olaylarının İşlenmesi

Yukarıda gösterilen hücre, bir hücrenin parçasıdır. Bu, bir elementtir. Üzerine gelinmediğinde rengi #FFC455 (turuncu)'dur. Üzerine gelindiğinde hücrenin rengi şeffaflaşır ve çevresindeki tablonun arka planıyla eşleşir.

) 1 Adım içe aktar İşlemler hem de Action sınıflar.

Eylemleri ve Eylem sınıflarını içe aktarın

) 2 Adım Yeni bir Actions nesnesi oluşturun.

Eylemler nesnesini örneklendirin

) 3 Adım 2. Adımdaki Actions nesnesini kullanarak bir Action örneği oluşturun.

Eylem nesnesini örneklendirin

Burada kullandığımız moveToElement() “Ana Sayfa” bağlantısının üzerine fareyle gelindiğinde uygulanacak yöntem. build() Bu yöntem her zaman en son çağrılır, böylece listelenen tüm işlemler tek bir adımda derlenir.

) 4 Adım Kullan perform() 3. adımda tasarlanan Action nesnesini yürütme yöntemi.

Eylemi gerçekleştirin

Aşağıda, arka plan rengini kontrol eden WebDriver kodunun tamamı yer almaktadır. Fareyle üzerine gelmeden önceki ve sonraki öğe.

package newproject;

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 = "https://demo.guru99.com/test/newtours/";
        System.setProperty("webdriver.gecko.driver", "C:\\geckodriver.exe");
        WebDriver driver = new FirefoxDriver();

        driver.get(baseUrl);
        WebElement link_Home = driver.findElement(By.linkText("Home"));
        WebElement td_Home = driver.findElement(By.xpath(
            "//html/body/div/table/tbody/tr/td"
            + "/table/tbody/tr/td"
            + "/table/tbody/tr/td"
            + "/table/tbody/tr"));

        Actions builder = new Actions(driver);
        Action mouseOverHome = builder.moveToElement(link_Home).build();

        String bgColor = td_Home.getCssValue("background-color");
        System.out.println("Before hover: " + bgColor);
        mouseOverHome.perform();
        bgColor = td_Home.getCssValue("background-color");
        System.out.println("After hover: " + bgColor);
        driver.close();
    }
}

Aşağıdaki çıktıda, fareyle üzerine gelindiğinde arka plan renginin şeffaf hale geldiği gösterilmektedir.

Fareyle üzerine gelindiğinde görüntülenen çıktı

Bir dizi Çoklu Eylem Oluşturma

Action ve Actions sınıflarını kullanarak bir dizi eylem oluşturabilirsiniz. Seriyi kapatmayı unutmayın. build() Yöntem. Aşağıdaki örnek koda göz atın.

birden fazla eylemden oluşan bir dizi oluşturmak

public static void main(String[] args) {
    String baseUrl = "https://www.facebook.com/";
    WebDriver driver = new FirefoxDriver();

    driver.get(baseUrl);
    WebElement txtUsername = driver.findElement(By.id("email"));

    Actions builder = new Actions(driver);
    Action seriesOfActions = builder
        .moveToElement(txtUsername)
        .click()
        .keyDown(txtUsername, Keys.SHIFT)
        .sendKeys(txtUsername, "hello")
        .keyUp(txtUsername, Keys.SHIFT)
        .doubleClick(txtUsername)
        .contextClick()
        .build();

    seriesOfActions.perform();
}

Eylemler dizisi çıktısı

SSS

Action sınıfı, Actions sınıfı ile oluşturulmuş, derlenmiş bir klavye ve fare etkileşimleri dizisini temsil eder. Bu dizi, Gelişmiş Kullanıcı Etkileşimleri API'si aracılığıyla yürütülür. Selenium WebDriver.

Eylemler (çoğul), fareyle üzerine gelme ve tıklama gibi etkileşimleri zincirlemek için kullanılan oluşturucudur. Eylem (tekil), build() tarafından döndürülen ve perform() ile çalıştırdığınız derlenmiş nesnedir.

build() fonksiyonu, zincirleme etkileşimlerin tümünü tek bir bileşik Eyleme derler. Her zaman en son, perform() fonksiyonundan hemen önce çağrılır, böylece sıraya alınmış adımlar tek bir sıra halinde birlikte yürütülür.

`perform()` fonksiyonu, oluşturulan Eylemi tarayıcıya karşı yürütür. Bu fonksiyon olmadan, zincirleme etkileşimler yalnızca sıraya alınır ve asla sayfaya gönderilmez.

Bir Actions nesnesi üzerinde moveToElement(element) kullanın, ardından build() ve perform() yöntemlerini çağırın. Bu, imleci öğenin merkezine taşır ve açılır menü gibi herhangi bir fareyle üzerine gelme davranışını tetikler.

clickAndHold, contextClick, doubleClick, dragAndDrop, dragAndDropBy, keyDown, keyUp, moveByOffset, moveToElement, release ve sendKeys gibi gelişmiş etkileşimlerin çoğunu destekler.

Yapay zeka araçları, öğeler değiştiğinde uyum sağlayan ve fareyle üzerine gelme ve sürükle-bırak testlerindeki kararsız hataları azaltan, kendi kendini onaran konum belirleyiciler kullanır. Ayrıca istikrarlı XPath'ler önerir ve otomatik olarak akıllı bekleme süreleri ekler.

Evet. Yapay zeka kod yardımcıları, "Ana Sayfa üzerine gelin ve sağ tıklayın" gibi basit bir İngilizce senaryoyu build() ve perform() fonksiyonlarıyla çalışan bir Eylem zincirine dönüştürür ve sağlam konum belirleyiciler önerir.

Bu yazıyı şu şekilde özetleyin: