Action Class in Selenium
โก Smart opsummering
Action Class in Selenium hรฅndterer avancerede tastatur- og musehรฆndelser sรฅsom pegebevรฆgelse, trรฆk-og-slip, hรธjreklik og tastekombinationer via Advanced User Interactions API. Denne vejledning forklarer Actions- og Action-klasserne, nรธglemetoderne og hvordan man kรฆder flere interaktioner sammen i รฉn sekvens.

Action Class in Selenium
Action Class in Selenium er en indbygget funktion til hรฅndtering af tastatur- og musehรฆndelser. Den understรธtter handlinger som flere klik med Ctrl-tasten, trรฆk-og-slip og meget mere. Disse handlinger udfรธres ved hjรฆlp af Advanced User Interactions API i Selenium WebDriver.
Hรฅndtering af tastatur- og musevents
Hรฅndtering af sรฆrlige tastatur- og musehรฆndelser 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. De mest almindeligt anvendte tastatur- og musebegivenheder, der leveres af Actions-klassen, er anfรธrt nedenfor.
| Metode | Beskrivelse |
|---|---|
| clickAndHold() | Klik (uden at slippe) pรฅ den aktuelle museplacering. |
| kontekstKlik() | Udfรธrer et kontekstklik (hรธjreklik) pรฅ den aktuelle museplacering. |
| dobbeltklik() | Udfรธrer et dobbeltklik pรฅ den aktuelle museplacering. |
| dragAndDrop(kilde, mรฅl) | Klik og hold nede pรฅ kildeelementet, flytter til mรฅlelementet og slipper derefter musen. Parametre: kilde (element at trykke pรฅ), mรฅl (element at slippe). |
| dragAndDropBy(kilde, x-offset, y-offset) | Klik og hold pรฅ kildeelementet, flytter med en given forskydning og slipper derefter. Parametre: kilde, xOffset (vandret), yOffset (lodret). |
| keyDown(modifier_key) | Trykker pรฅ en รฆndringstast uden at slippe den, sรฅ senere interaktioner antager, at den forbliver nede. Parameter: en รฆndringstast (Keys.ALT, Keys.SHIFT eller Keys.CONTROL). |
| keyUp(modifikator_nรธgle) | Slipper en รฆndringstast. Parameter: en รฆndringstast (Keys.ALT, Keys.SHIFT eller Keys.CONTROL). |
| moveByOffset(x-offset, y-offset) | Flytter musen fra dens nuvรฆrende position (eller 0,0) med den givne forskydning. Et negativt x flytter til venstre; et negativt y flytter op. |
| moveToElement(toElement) | Flytter musen til midten af โโelementet. Parameter: det element, der skal flyttes til. |
| frigรธre() | Slipper den nedtrykkede venstre museknap pรฅ den aktuelle placering. |
| sendKeys(onElement, charsequence) | Sender en rรฆkke tastetryk til et element. Parametre: onElement (normalt et tekstfelt), charsequence (de tastetryk, der skal sendes). |
I det fรธlgende eksempel bruger vi moveToElement() metode til at holde musen over en af Mercury Rundvisninger i tabellerรฆkker.
Cellen vist ovenfor er en del af en element. Nรฅr musen ikke holdes over det, er farven #FFC455 (orange). Nรฅr musen holdes over det, bliver cellens farve gennemsigtig og matcher baggrunden i den omgivende tabel.
Trin 1) Importer handlinger og Handling klasser.
Trin 2) Instantiรฉr et nyt Actions-objekt.
Trin 3) Instantier en handling ved hjรฆlp af Actions-objektet fra trin 2.
Her bruger vi moveToElement() metode til at holde musen over linket "Hjem". build() Metoden kaldes altid sidst, sรฅ alle anfรธrte handlinger kompileres til et enkelt trin.
Trin 4) Brug perform() metode til at udfรธre det handlingsobjekt, der er designet i trin 3.
Nedenfor er den fulde WebDriver-kode, der kontrollerer baggrundsfarven pรฅ element fรธr og efter 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();
}
}
Outputtet nedenfor viser, at baggrundsfarven blev gennemsigtig efter musen blev holdt over den.
Opbygning af en rรฆkke af flere handlinger
Du kan opbygge en serie af handlinger ved hjรฆlp af klasserne Handling og Handlinger. Husk at afslutte serien med build() metode. Overvej 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();
}





