Τάξη δράσης σε Selenium
⚡ Έξυπνη Σύνοψη
Τάξη δράσης σε Selenium χειρίζεται προηγμένα συμβάντα πληκτρολογίου και ποντικιού, όπως τοποθέτηση του δείκτη του ποντικιού, μεταφορά και απόθεση, δεξί κλικ και συνδυασμούς πλήκτρων μέσω του API για προχωρημένους αλληλεπιδράσεις χρήστη. Αυτό το σεμινάριο εξηγεί τις κλάσεις Ενέργειες και Ενέργειας, τις μεθόδους κλειδιών και τον τρόπο σύνδεσης πολλαπλών αλληλεπιδράσεων σε μία ακολουθία.

Τάξη δράσης σε Selenium
Τάξη δράσης σε Selenium είναι μια ενσωματωμένη λειτουργία για τον χειρισμό συμβάντων πληκτρολογίου και ποντικιού. Υποστηρίζει λειτουργίες όπως πολλαπλά κλικ με το πλήκτρο Control, μεταφορά και απόθεση και πολλές άλλες. Αυτές οι λειτουργίες εκτελούνται χρησιμοποιώντας το API για προχωρημένους αλληλεπιδράσεις χρήστη στο Selenium WebDriver.
Χειρισμός συμβάντων με πληκτρολόγιο και ποντίκι
Η διαχείριση ειδικών συμβάντων πληκτρολογίου και ποντικιού γίνεται χρησιμοποιώντας το Advanced User Interactions API. Περιέχει το Δράσεις Ενέργειες κλάσεις που απαιτούνται για την εκτέλεση αυτών των συμβάντων. Τα πιο συχνά χρησιμοποιούμενα συμβάντα πληκτρολογίου και ποντικιού που παρέχονται από την κλάση Actions παρατίθενται παρακάτω.
| Μέθοδος | Περιγραφή |
|---|---|
| clickAndHold() | Κλικ (χωρίς απελευθέρωση) στην τρέχουσα θέση του ποντικιού. |
| contextΚλικ() | Εκτελεί ένα κλικ με βάση τα συμφραζόμενα (δεξί κλικ) στην τρέχουσα θέση του ποντικιού. |
| doubleClick() | Πραγματοποιεί διπλό κλικ στην τρέχουσα θέση του ποντικιού. |
| dragAndDrop (πηγή, στόχος) | Κάνει κλικ και κρατάει πατημένο το ποντίκι στο στοιχείο πηγής, μετακινείται στο στοιχείο στόχου και, στη συνέχεια, αφήνει το ποντίκι. Παράμετροι: πηγή (στοιχείο που θα πατηθεί), στόχος (στοιχείο που θα αφεθεί). |
| dragAndDropBy (πηγή, x-offset, y-offset) | Κάνει κλικ και κρατάει πατημένο το κουμπί στο στοιχείο πηγής, μετακινείται κατά μια δεδομένη μετατόπιση και στη συνέχεια απελευθερώνεται. Παράμετροι: πηγή, xOffset (οριζόντια), yOffset (κάθετη). |
| keyDown(modifier_key) | Πατάει ένα πλήκτρο τροποποίησης χωρίς να το απελευθερώνει, επομένως οι μεταγενέστερες αλληλεπιδράσεις υποθέτουν ότι παραμένει πατημένο. Παράμετρος: ένα πλήκτρο τροποποίησης (Keys.ALT, Keys.SHIFT ή Keys.CONTROL). |
| keyUp(κλειδί_τροποποίησης) | Απελευθερώνει ένα πλήκτρο τροποποίησης. Παράμετρος: ένα πλήκτρο τροποποίησης (Keys.ALT, Keys.SHIFT ή Keys.CONTROL). |
| moveByOffset (x-offset, y-offset) | Μετακινεί το ποντίκι από την τρέχουσα θέση του (ή 0,0) κατά τη δεδομένη μετατόπιση. Ένα αρνητικό x μετακινείται αριστερά. Ένα αρνητικό y μετακινείται προς τα πάνω. |
| moveToElement(toElement) | Μετακινεί το ποντίκι στο κέντρο του στοιχείου. Παράμετρος: το στοιχείο στο οποίο θα μετακινηθεί. |
| ελευθέρωση() | Απελευθερώνει το πατημένο αριστερό κουμπί του ποντικιού στην τρέχουσα θέση. |
| sendKeys (oneElement, charsequence) | Αποστέλλει μια σειρά από πλήκτρα σε ένα στοιχείο. Παράμετροι: onElement (συνήθως ένα πεδίο κειμένου), charsequence (τα πλήκτρα που θα αποσταλούν). |
Στο παρακάτω παράδειγμα, χρησιμοποιούμε το moveToElement() μέθοδος για να τοποθετήσετε τον δείκτη του ποντικιού πάνω από ένα από τα Mercury Σειρές τραπεζιών για περιηγήσεις.
Το κελί που φαίνεται παραπάνω είναι μέρος ενός στοιχείο. Όταν δεν τοποθετείται ο δείκτης του ποντικιού, το χρώμα του είναι #FFC455 (πορτοκαλί). Μετά την τοποθέτηση του δείκτη του ποντικιού, το χρώμα του κελιού γίνεται διαφανές και ταιριάζει με το φόντο του περιβάλλοντος πίνακα.
Βήμα 1) Εισαγάγετε το Δράσεις Ενέργειες τάξεις.
Βήμα 2) Δημιουργήστε ένα νέο αντικείμενο Actions.
Βήμα 3) Δημιουργήστε μια ενέργεια χρησιμοποιώντας το αντικείμενο Actions από το Βήμα 2.
Εδώ χρησιμοποιούμε το moveToElement() μέθοδος για να τοποθετήσετε τον δείκτη του ποντικιού πάνω από τον σύνδεσμο «Αρχική». Η build() Η μέθοδος καλείται πάντα τελευταία, έτσι ώστε όλες οι καταχωρημένες ενέργειες να μεταγλωττίζονται σε ένα μόνο βήμα.
Βήμα 4) Χρησιμοποιήστε το perform() μέθοδος για την εκτέλεση του αντικειμένου Action που σχεδιάστηκε στο Βήμα 3.
Παρακάτω είναι ο πλήρης κώδικας WebDriver που ελέγχει το χρώμα φόντου του στοιχείο πριν και μετά την τοποθέτηση του ποντικιού πάνω από αυτό.
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();
}
}
Το παρακάτω αποτέλεσμα δείχνει ότι το χρώμα φόντου έγινε διαφανές μετά την τοποθέτηση του ποντικιού πάνω από το φόντο.
Δημιουργία μιας σειράς πολλαπλών ενεργειών
Μπορείτε να δημιουργήσετε μια σειρά ενεργειών χρησιμοποιώντας τις κλάσεις Action και Actions. Θυμηθείτε να κλείσετε τη σειρά με την build() μέθοδος. Εξετάστε το παρακάτω δείγμα κώδικα.
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();
}





