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.
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.
Trin 2) Instantiér et nyt Actions-objekt.
Trin 3) Instantiér en handling ved hjælp af Actions-objektet i trin 2.
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.
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.
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.
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() ; }
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.