Toimintaluokka sisään Selenium

⚡ Älykäs yhteenveto

Toimintaluokka sisään Selenium käsittelee edistyneitä näppäimistö- ja hiiritoimintoja, kuten hiiren osoittimen käyttöä, vetämistä ja pudottamista, hiiren kakkospainikkeen napsautusta ja näppäinyhdistelmiä Advanced User Interactions API:n kautta. Tässä tutoriaalissa selitetään Actions- ja Action-luokat, näppäinmetodit ja useiden vuorovaikutusten ketjuttaminen yhdeksi sarjaksi.

  • 🖱️ Ydintarkoitus: Actions-luokka automatisoi yhdistetyt hiiren ja näppäimistön tapahtumat, joihin perus click() ei pysty.
  • 🔑 Kaksi luokkaa: Toiminnot rakentaa vuorovaikutuksen; Toiminto tallentaa käännetyn sekvenssin suoritettavaksi.
  • 🧱 Rakenna ja suorita: Ketjuta metodit, lopeta build()-funktiolla ja suorita perform()-funktiolla.
  • 📋 Tärkeimmät menetelmät: moveToElement(), dragAndDrop(), keyDown()/keyUp(), contextClick() ja sendKeys().
  • 🤖 Tekoälyn käyttöönotto: Tekoälyavustajat luovat Action-luokan koodia ja itsekorjautuvat paikantimet vuorovaikutustestien aikana.

Hiiren päälle vieminen

Toimintaluokka sisään Selenium

Toimintaluokka sisään Selenium on sisäänrakennettu ominaisuus näppäimistö- ja hiiritoimintojen käsittelyyn. Se tukee toimintoja, kuten useita napsautuksia Ctrl-näppäimellä, vetämistä ja pudottamista ja monia muita. Nämä toiminnot suoritetaan käyttämällä Advanced User Interactions API:a Selenium WebDriver.

Näppäimistö- ja hiiritapahtumien käsittely

Näppäimistö- ja hiiritoimintojen käsittely tapahtuu käyttämällä Advanced User Interactions API. Se sisältää Toiminnot ja Toiminta luokat, joita tarvitaan näiden tapahtumien suorittamiseen. Yleisimmin käytetyt Actions-luokan tarjoamat näppäimistö- ja hiiritapahtumat on lueteltu alla.

Menetelmä Tuotetiedot
clickAndHold() Napsautukset (vapauttamatta) hiiren nykyisessä sijainnissa.
kontekstiClick() Suorittaa kontekstinapsautuksen (hiiren kakkospainikkeen napsautuksen) hiiren nykyisessä sijainnissa.
doubleClick() Suorittaa kaksoisnapsautuksen hiiren nykyisessä paikassa.
vedäAndDrop(lähde, kohde) Napsauta ja pidä pohjassa lähde-elementtiä, siirry kohde-elementtiin ja vapauta sitten hiiripainike. Parametrit: lähde (painettava elementti), kohde (vapautettava elementti).
dragAndDropBy(lähde, x-offset, y-offset) Napsauta ja pidä pohjassa lähdeelementtiä, siirrä elementtiä annetun siirtymän verran ja vapauta. Parametrit: lähde, xOffset (vaakasuora), yOffset (pystysuora).
keyDown(muokkausavain) Painaa muokkausnäppäintä vapauttamatta sitä, joten myöhemmät toiminnot olettavat sen pysyvän painettuna. Parametri: muokkausnäppäin (Keys.ALT, Keys.SHIFT tai Keys.CONTROL).
keyUp(muokkaaja_avain) Vapauttaa muokkausnäppäimen. Parametri: muokkausnäppäin (Keys.ALT, Keys.SHIFT tai Keys.CONTROL).
moveByOffset(x-offset, y-offset) Siirtää hiiren osoittimen nykyisestä sijainnistaan ​​(tai kohdasta 0,0) annetun siirtymän verran. Negatiivinen x siirtää hiiren osoittimen vasemmalle; negatiivinen y siirtää hiiren osoittimen ylöspäin.
siirrä elementtiin (elementtiin) Siirtää hiiren elementin keskelle. Parametri: elementti, johon siirretään.
vapauttaa () Vapauttaa painetun hiiren vasemman painikkeen nykyisessä sijainnissa.
sendKeys(onElement, merkkisekvenssi) Lähettää sarjan näppäinpainalluksia elementille. Parametrit: onElement (yleensä tekstikenttä), charsequence (lähetettävät näppäinpainallukset).

Seuraavassa esimerkissä käytämme moveToElement() tapa viettää hiiri jonkin päälle Mercury Tours-taulukon rivit.

Näppäimistö- ja hiiritapahtumien käsittely

Yllä oleva solu on osa elementti. Kun hiirellä ei viitä solun päälle, sen väri on #FFC455 (oranssi). Kun hiirellä viivästetään solun päälle, sen väri muuttuu läpinäkyväksi ja vastaa ympäröivän taulukon taustaa.

Vaihe 1) Tuo Toiminnot ja Toiminta luokat.

Tuo toiminnot ja toimintoluokat

Vaihe 2) Luo uusi Actions-objekti.

Luo Toiminnot-objekti

Vaihe 3) Luo toiminto vaiheessa 2 luodun Actions-objektin avulla.

Luo toiminto-objekti

Tässä käytämme moveToElement() tapa viedä hiiri "Etusivu"-linkin päälle. build() metodia kutsutaan aina viimeisenä, jotta kaikki luetellut toiminnot kootaan yhdeksi vaiheeksi.

Vaihe 4) Käytä perform() menetelmä vaiheessa 3 suunnitellun toiminto-objektin suorittamiseksi.

Suorita toiminto

Alla on täydellinen WebDriver-koodi, joka tarkistaa taustavärin elementti ennen hiiren osoittamista sen päälle ja sen jälkeen.

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

Alla oleva tuloste osoittaa, että taustaväri muuttui läpinäkyväksi hiiren osoittimen viemisen jälkeen.

Hiiren päälle vieminen

Useiden toimien sarjan rakentaminen

Voit rakentaa sarjan toimintoja käyttämällä Action- ja Actions-luokkia. Muista päättää sarja luokalla build() menetelmä. Tarkastellaan alla olevaa esimerkkikoodia.

Useiden toimintojen sarjan rakentaminen

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

Toimintosarjan tuloste

UKK

Action-luokka edustaa Actions-luokalla rakennettua käännettyä näppäimistö- ja hiiritoimintojen sarjaa. Se suoritetaan Advanced User Interactions API:n kautta Selenium WebDriver.

Actions (monikko) on rakentaja, jota käytetään vuorovaikutusten, kuten hiiren osoittimen ja klikkauksen, ketjuttamiseen. Action (yksikkö) on build()-funktion palauttama käännetty objekti, jota suoritetaan perform()-funktiolla.

build() kokoaa kaikki ketjutetut vuorovaikutukset yhdeksi yhdistetyksi toiminnoksi. Sitä kutsutaan aina viimeisenä, juuri ennen perform()-funktiota, joten jonossa olevat vaiheet suoritetaan yhdessä yhtenä sarjana.

perform() suorittaa luodun toiminnon selainta vastaan. Ilman sitä ketjutetut toiminnot vain jonotetaan, eikä niitä koskaan lähetetä sivulle.

Käytä moveToElement(element)-funktiota Actions-objektissa ja kutsu sitten build()- ja perform()-funktioita. Tämä siirtää kohdistimen elementin keskelle ja laukaisee mahdolliset osoittimen liikkumiseen liittyvät toiminnot, kuten alasvetovalikon.

Se tukee clickAndHold-, contextClick-, doubleClick-, dragAndDrop-, dragAndDropBy-, keyDown-, keyUp-, moveByOffset-, moveToElement-, release- ja sendKeys-funktioita — kattaen useimmat edistyneet vuorovaikutustavat.

Tekoälytyökalut käyttävät itsekorjautuvia paikantimia, jotka mukautuvat elementtien muuttuessa, mikä vähentää epätasaisia ​​virheitä leijutus- ja raahaus- ja pudotustesteissä. Ne suosittelevat myös vakaita XPath-polkuja ja lisäävät älykkäitä odotusaikoja automaattisesti.

Kyllä. Tekoälykoodiavustajat muuttavat yksinkertaisen englanninkielisen skenaarion, kuten ”vie hiiri Koti-painikkeen päälle ja napsauta hiiren kakkospainikkeella”, toimivaksi toimintoketjuksi build():n ja perform():n avulla ja ehdottavat vankkoja paikantimia.

Tiivistä tämä viesti seuraavasti: