Action Class in Selenium
⚡ Smart oppsummering
Action Class in Selenium håndterer avanserte tastatur- og musehendelser som svevebevegelse, dra-og-slipp, høyreklikk og tastekombinasjoner gjennom Advanced User Interactions API. Denne veiledningen forklarer Actions- og Action-klassene, nøkkelmetodene og hvordan du kjeder flere interaksjoner til én sekvens.

Action Class in Selenium
Action Class in Selenium er en innebygd funksjon for håndtering av tastatur- og musehendelser. Den støtter operasjoner som flere klikk med Ctrl-tasten, dra-og-slipp og mye mer. Disse operasjonene utføres ved hjelp av Advanced User Interactions API i Selenium WebDriver.
Håndtering av tastatur- og mushendelser
Håndtering av spesielle tastatur- og musehendelser gjøres ved hjelp av Advanced User Interactions API. Den inneholder handlinger og Handling klasser som trengs for å utføre disse hendelsene. De vanligste tastatur- og musehendelsene som tilbys av Actions-klassen er listet opp nedenfor.
| Metode | Tekniske beskrivelser |
|---|---|
| clickAndHold() | Klikker (uten å slippe) på gjeldende museplassering. |
| contextClick() | Utfører et kontekstklikk (høyreklikk) på gjeldende museposisjon. |
| doubleClick() | Utfører et dobbeltklikk på gjeldende museplassering. |
| dragAndDrop(kilde, mål) | Klikk og hold inne på kildeelementet, flytter til målelementet og slipper deretter musen. Parametre: kilde (elementet du skal trykke på), mål (elementet du skal slippe). |
| dragAndDropBy(kilde, x-offset, y-offset) | Klikk og hold inne på kildeelementet, flytter seg med en gitt forskyvning, og slipper deretter. Parametre: kilde, xOffset (horisontal), yOffset (vertikal). |
| keyDown(modifier_key) | Trykker på en spesialtast uten å slippe den, slik at senere interaksjoner antar at den forblir nede. Parameter: en spesialtast (Keys.ALT, Keys.SHIFT eller Keys.CONTROL). |
| keyUp(modifikator_nøkkel) | Slipper en spesialtast. Parameter: en spesialtast (Keys.ALT, Keys.SHIFT eller Keys.CONTROL). |
| moveByOffset(x-offset, y-offset) | Flytter musen fra sin nåværende posisjon (eller 0,0) med den gitte forskyvningen. En negativ x flyttes til venstre; en negativ y flyttes opp. |
| moveToElement(toElement) | Flytter musen til midten av elementet. Parameter: elementet som skal flyttes til. |
| utgivelse() | Slipper den nedtrykte venstre museknappen på gjeldende plassering. |
| sendKeys(onElement, charsequence) | Sender en serie tastetrykk til et element. Parametre: onElement (vanligvis et tekstfelt), charsequence (tastetrykkene som skal sendes). |
I det følgende eksemplet bruker vi moveToElement() metode for å holde musepekeren over en av Mercury Omvisninger i tabellrader.
Cellen vist ovenfor er en del av en element. Når den ikke holdes over, er fargen #FFC455 (oransje). Etter at du har holdt musepekeren over cellen, blir fargen gjennomsiktig og matcher bakgrunnen i den omkringliggende tabellen.
Trinn 1) Importer handlinger og Handling klasser.
Trinn 2) Instantier et nytt Actions-objekt.
Trinn 3) Instantier en handling ved hjelp av handlingsobjektet fra trinn 2.
Her bruker vi moveToElement() metode for å holde musepekeren over «Hjem»-lenken. build() Metoden kalles alltid sist, slik at alle listede handlinger kompileres til ett enkelt trinn.
Trinn 4) Bruke perform() metode for å utføre handlingsobjektet som ble designet i trinn 3.
Nedenfor er den fullstendige WebDriver-koden som sjekker bakgrunnsfargen til element før og etter at musen holdes 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();
}
}
Resultatet nedenfor viser at bakgrunnsfargen ble gjennomsiktig etter at musepekeren ble holdt over den.
Bygge en serie med flere handlinger
Du kan bygge en serie med handlinger ved hjelp av klassene Handling og Handlinger. Husk å avslutte serien med build() metode. Vurder eksempelkoden nedenfor.
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();
}





