Kelas Aksi di Selenium

โšก Ringkasan Cerdas

Kelas Aksi di Selenium Menangani peristiwa keyboard dan mouse tingkat lanjut seperti hover, drag-and-drop, klik kanan, dan kombinasi tombol melalui API Interaksi Pengguna Tingkat Lanjut. Tutorial ini menjelaskan kelas Actions dan Action, metode-metode kunci, dan cara menggabungkan beberapa interaksi menjadi satu rangkaian.

  • ๏ธ Tujuan Inti: Kelas Actions mengotomatiskan gabungan kejadian mouse dan keyboard yang tidak dapat dilakukan oleh fungsi click() dasar.
  • ๐Ÿ”‘ Dua Kelas: Actions membangun interaksi; Action menyimpan urutan yang telah dikompilasi untuk dieksekusi.
  • ๐Ÿงฑ Bangun lalu Lakukan: Rantai metode, akhiri dengan build(), dan jalankan dengan perform().
  • ๐Ÿ“‹ Metode Utama: moveToElement(), dragAndDrop(), keyDown()/keyUp(), contextClick(), dan sendKeys().
  • ๐Ÿค– Pemberdayaan AI: Asisten AI menghasilkan kode kelas Action dan memperbaiki sendiri locator selama pengujian interaksi.

Output saat kursor diarahkan ke objek

Kelas Aksi di Selenium

Kelas Aksi di Selenium adalah fitur bawaan untuk menangani kejadian keyboard dan mouse. Fitur ini mendukung operasi seperti beberapa klik dengan tombol Control, seret dan lepas, dan banyak lagi. Operasi ini dilakukan menggunakan API Interaksi Pengguna Tingkat Lanjut di Selenium Pengemudi Web.

Menangani Acara Keyboard & Mouse

Penanganan kejadian khusus pada keyboard dan mouse dilakukan dengan menggunakan API Interaksi Pengguna Tingkat Lanjut. Ini berisi tindakan ke Tindakan Kelas-kelas yang dibutuhkan untuk menjalankan peristiwa-peristiwa ini. Peristiwa keyboard dan mouse yang paling umum digunakan yang disediakan oleh kelas Actions tercantum di bawah ini.

metode Deskripsi
klikDanTahan() Klik (tanpa melepaskan) di lokasi mouse saat ini.
konteksKlik() Melakukan klik kontekstual (klik kanan) pada lokasi mouse saat ini.
klik ganda() Melakukan klik ganda pada lokasi mouse saat ini.
dragAndDrop(sumber, target) Klik dan tahan pada elemen sumber, pindah ke elemen target, lalu lepaskan mouse. Parameter: sumber (elemen yang ditekan), target (elemen tempat mouse dilepaskan).
dragAndDropBy(sumber, x-offset, y-offset) Klik dan tahan pada elemen sumber, bergerak sejauh offset yang diberikan, lalu dilepaskan. Parameter: sumber, xOffset (horizontal), yOffset (vertikal).
kunciBawah(pengubah_kunci) Menekan tombol pengubah tanpa melepaskannya, sehingga interaksi selanjutnya menganggap tombol tersebut tetap ditekan. Parameter: tombol pengubah (Keys.ALT, Keys.SHIFT, atau Keys.CONTROL).
keyUp(modifier_key) Melepaskan tombol pengubah. Parameter: tombol pengubah (Keys.ALT, Keys.SHIFT, atau Keys.CONTROL).
moveByOffset(x-offset, y-offset) Menggerakkan kursor mouse dari posisi saat ini (atau 0,0) sejauh offset yang diberikan. Nilai x negatif menggerakkan kursor ke kiri; nilai y negatif menggerakkan kursor ke atas.
pindahKeElemen(keElemen) Menggerakkan kursor mouse ke tengah elemen. Parameter: elemen tujuan.
melepaskan() Melepaskan tombol kiri mouse yang ditekan pada lokasi saat ini.
sendKeys(onElement, urutan karakter) Mengirim serangkaian penekanan tombol ke suatu elemen. Parameter: onElement (biasanya kolom teks), charsequence (penekanan tombol yang akan dikirim).

Dalam contoh berikut, kami menggunakan moveToElement() metode untuk mengarahkan kursor ke salah satu Mercury Baris tabel tur.

Menangani Peristiwa Keyboard dan Mouse

Sel yang ditunjukkan di atas adalah bagian dari sebuah elemen. Saat tidak dihover, warnanya adalah #FFC455 (oranye). Setelah dihover, warna sel menjadi transparan dan sesuai dengan latar belakang tabel di sekitarnya.

Langkah 1) Impor tindakan ke Tindakan kelas.

Impor Aksi dan kelas Aksi

Langkah 2) Buat instance objek Tindakan baru.

Buat instance objek Actions.

Langkah 3) Buat instance Action menggunakan objek Actions dari Langkah 2.

Buat instance objek Aksi

Di sini kita menggunakan moveToElement() Metode untuk mengarahkan kursor ke tautan โ€œBerandaโ€. build() Metode ini selalu dipanggil terakhir agar semua tindakan yang tercantum digabungkan menjadi satu langkah.

Langkah 4) Gunakan perform() metode untuk mengeksekusi objek Action yang dirancang pada Langkah 3.

Lakukan tindakan tersebut

Berikut adalah kode WebDriver lengkap yang memeriksa warna latar belakang. elemen sebelum dan sesudah kursor diarahkan ke atasnya.

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();
    }
}

Hasil di bawah ini menunjukkan bahwa warna latar belakang menjadi transparan setelah kursor mouse diarahkan ke atasnya.

Output saat kursor diarahkan ke objek

Membangun Serangkaian Tindakan Berganda

Anda dapat membangun serangkaian tindakan menggunakan kelas Action dan Actions. Ingatlah untuk mengakhiri rangkaian tersebut dengan build() metode. Perhatikan contoh kode di bawah ini.

Membangun serangkaian tindakan berganda

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();
}

Serangkaian tindakan keluaran

Pertanyaan Umum Demo Slot

Kelas Action merepresentasikan urutan interaksi keyboard dan mouse yang telah dikompilasi dan dibangun dengan kelas Actions. Kelas ini dieksekusi melalui API Interaksi Pengguna Tingkat Lanjut di Selenium Pengemudi Web.

Actions (jamak) adalah builder yang digunakan untuk merangkai interaksi seperti hover dan klik. Action (tunggal) adalah objek yang telah dikompilasi yang dikembalikan oleh build() yang Anda jalankan dengan perform().

Fungsi build() menggabungkan semua interaksi berantai menjadi satu Aksi komposit tunggal. Fungsi ini selalu dipanggil terakhir, tepat sebelum perform(), sehingga langkah-langkah yang diantrekan dieksekusi bersama sebagai satu rangkaian.

Fungsi `perform()` mengeksekusi Action yang telah dibuat terhadap browser. Tanpa fungsi ini, interaksi berantai hanya akan dimasukkan ke dalam antrian dan tidak pernah benar-benar dikirim ke halaman.

Gunakan moveToElement(element) pada objek Actions, lalu panggil build() dan perform(). Ini memindahkan kursor ke tengah elemen dan memicu perilaku hover apa pun, seperti menu dropdown.

Fitur ini mendukung clickAndHold, contextClick, doubleClick, dragAndDrop, dragAndDropBy, keyDown, keyUp, moveByOffset, moveToElement, release, dan sendKeys โ€” mencakup sebagian besar interaksi tingkat lanjut.

Alat AI menggunakan locator yang dapat memperbaiki diri sendiri dan beradaptasi ketika elemen berubah, mengurangi kegagalan yang tidak menentu dalam pengujian hover dan drag-and-drop. Alat ini juga merekomendasikan XPath yang stabil dan menambahkan penundaan cerdas secara otomatis.

Ya. Asisten kode AI mengubah skenario bahasa Inggris sederhana seperti "arahkan kursor ke Beranda lalu klik kanan" menjadi rangkaian Aksi yang berfungsi dengan build() dan perform(), serta menyarankan locator yang andal.

Ringkaslah postingan ini dengan: