Action Class in Selenium – Begivenheder med museklik og tastatur

I denne tutorial lærer vi at håndtere tastatur- og musebegivenheder i Selenium Webdriver

Action Class in Selenium

Action Class in Selenium er en indbygget funktion leveret af selen til håndtering af tastatur- og musebegivenheder. Det inkluderer forskellige operationer såsom flere hændelser, klik med kontroltasten, træk og slip hændelser og mange flere. Disse operationer fra handlingsklassen udføres ved hjælp af den avancerede brugerinteraktions-API i Selenium Webdriver.

Håndtering af tastatur- og musevents

Håndtering af specielle tastatur- og musebegivenheder udføres ved hjælp af Advanced User Interactions API. Den indeholder handlinger og Handling klasser, der er nødvendige for at udføre disse begivenheder. Følgende er de mest almindeligt anvendte tastatur- og musehændelser leveret af Actions-klassen.

Metode Description
clickAndHold() Klik (uden at slippe) på den aktuelle museplacering.
kontekstKlik() Udfører et kontekstklik på den aktuelle museplacering. (Højreklik med musen)
dobbeltklik() Udfører et dobbeltklik på den aktuelle museplacering.
dragAndDrop(kilde, mål) Udfører klik-og-hold på placeringen af ​​kildeelementet, flytter til placeringen af ​​målelementet og slipper derefter musen.

Parametre:

kilde-element til at emulere knap ned på.

mål-element at flytte til og slippe musen ved.

dragAndDropBy(kilde, x-offset, y-offset) Udfører klik-og-hold ved placeringen af ​​kildeelementet, bevæger sig med en given offset og slipper derefter musen.

parametre:

kilde-element til at emulere knap ned på.

xOffset- horisontal bevægelsesforskydning.

yOffset- lodret bevægelsesforskydning.

keyDown(modifier_key) Udfører et tryk på en ændringstast. Slip ikke modifikationstasten – efterfølgende interaktioner kan antage, at den holdes nede.

parametre:

modifier_key – enhver af modifikatortasterne (Keys.ALT, Keys.SHIFT eller Keys.CONTROL)

keyUp(modifikator _key) Udfører en nøglefrigivelse.

parametre:

modifier_key – enhver af modifikatortasterne (Keys.ALT, Keys.SHIFT eller Keys.CONTROL)

moveByOffset(x-offset, y-offset) Flytter musen fra dens aktuelle position (eller 0,0) med den givne offset.

parametre:

x-offset- horisontal offset. En negativ værdi betyder at flytte musen til venstre.

y-offset- lodret offset. En negativ værdi betyder at flytte musen ned.

moveToElement(toElement) Flytter musen til midten af ​​elementet.

parametre:

toElement- element at flytte til.

frigøre() Slip den nedtrykket venstre museknap på den aktuelle museplacering
sendKeys(onElement, charsequence) Sender en række tastetryk til elementet.

parametre:

oneElement – ​​element, der vil modtage tastetryk, normalt et tekstfelt

charsequence – enhver strengværdi, der repræsenterer rækkefølgen af ​​tastetryk, der skal sendes

I det følgende eksempel skal vi bruge metoden moveToElement() til at flytte musen over på en Mercury Tours' tabelrækker. Se eksemplet nedenfor.

Håndtering af tastatur- og musevents

Cellen vist ovenfor er en del af en element. Hvis den ikke svæver, er dens farve #FFC455 (orange). Efter at have svævet, bliver cellens farve gennemsigtig. Det bliver samme farve som den blå baggrund på hele det orange bord.

Trin 1) Importer handlinger og Handling klasser.

Håndtering af tastatur- og musevents

Trin 2) Instantiér et nyt Actions-objekt.

Håndtering af tastatur- og musevents

Trin 3) Instantiér en handling ved hjælp af Actions-objektet i trin 2.

Håndtering af tastatur- og musevents

I dette tilfælde vil vi bruge moveToElement()-metoden, fordi vi simpelthen vil flytte musen over "Hjem"-linket. build()-metoden er altid den sidste metode, der bruges, så alle de anførte handlinger vil blive kompileret i et enkelt trin.

Trin 4) Brug metoden perform(), når du udfører det Action-objekt, vi designede i trin 3.

Håndtering af tastatur- og musevents

Nedenfor er hele WebDriver-koden for at kontrollere baggrundsfarven på element før og efter musen-over.

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

Outputtet nedenfor viser tydeligt, at baggrundsfarven blev gennemsigtig efter musen-over.

Action Class in Selenium

Opbygning af en række af flere handlinger

Du kan bygge en række handlinger ved hjælp af klasserne Action og Actions. Bare husk at lukke serien med build() metoden. Overvej eksempelkoden nedenfor.

Opbygning af en række flere handlinger

public static void main(String[] args) {
String baseUrl = "http://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() ;

}

Opbygning af en række flere handlinger

Resumé

  • Håndtering af specielle tastatur- og mushændelser udføres ved hjælp af AdvancedUserInteractions API.
  • Ofte brugte søgeord og musehændelser er doubleClick(), keyUp, dragAndDropBy, contextClick & sendKeys.