Κατηγορία κρίσιμων ενεργειών στο σελήνιο -Απόλυτος οδηγός 2021

Θα συζητήσουμε και θα μάθουμε την εξαντλητική χρήση της τάξης Actions στο Selenium σε διαφορετικές λειτουργίες Web. Το Actions Class στο Selenium χρησιμοποιείται ευρέως για την εκτέλεση διαφόρων λειτουργιών ιστού, όπως η κίνηση του ποντικιού και του πληκτρολογίου, οι οποίες είναι προωθημένες ενέργειες προγράμματος περιήγησης στο Web.

Τάξη δράσεων σεληνίου
Μάθημα δράσεων στο Σελήνιο

Δράσεις Ποντίκι

  • Σύρετε και αποθέστε σελήνιο
  • Κάντε κλικAndHold στο Σελήνιο
  • moveToElement στο Σελήνιο 
  • dragAndDropBy στο Σελήνιο 
  • MoveByOffset στο Σελήνιο
  • DoubleClick στο Σελήνιο
  • RightClick ή ContextClick σε σελήνιο
  • Παύση στο Σελήνιο
  • Τοποθετήστε το ποντίκι στο σελήνιο

Ενέργειες πληκτρολογίου

  • sendKeys στο Σελήνιο
  • KeyUp στο Σελήνιο
  • KeyDown στο Σελήνιο

Τάξη δράσεων σεληνίου

Τι είναι η τάξη δράσης στο Σελήνιο: 

Το Actions Class είναι μια τάξη από το Selenium Bundle Api από το πακέτο org.openqa.selenium.επιδράσεις να χειριστείτε Κρίσιμες και να προωθήσετε αλληλεπιδράσεις στο Διαδίκτυο με Χρήστες μέσω Αυτοματισμού του προγράμματος περιήγησης. Παρέχει στους χρήστες μια λαβή για να εκτελούν διάφορες ενέργειες ποντικιού και πληκτρολογίου μέσω διαφορετικών μεθόδων που αναφέρονται παραπάνω.  

Τάξη δράσεων σεληνίου
Μάθημα δράσεων στο Σελήνιο

Θα συζητήσουμε εδώ όλες τις αλληλεπιδράσεις στο Διαδίκτυο μέσω της κατηγορίας Actions στο Σελήνιο, για να ξεκινήσουμε με Μαθαίνουμε τις αλληλεπιδράσεις ποντικιού και θα προχωρήσουμε προς την κλάση αλληλεπιδράσεων KeyBoard με Actions στο Σελήνιο.

Αλληλεπιδράσεις ποντικιού - Κλάση δράσεων στο Σελήνιο

Σύρετε και αποθέστε σελήνιο

Η μεταφορά και απόθεση στο Σελήνιο μπορεί να γίνει σε τρεις διαφορετικές προσεγγίσεις με την κατηγορία "Ενέργειες" στο Σελήνιο: 

  • Με μέθοδο build () 
  • Με τη μέθοδο dragAndDropBy ()
  • Με τη μέθοδο dragAndDrop ().

Μεταφορά και απόθεση στο Σελήνιο με Κλάση δράσης στο Σελήνιο μέσω μεθόδου κατασκευής: 

Πρέπει να έχουμε δύο webelements για να εκτελέσουμε το Drag and Drop στο Selenium όπως το Source WebElement (το οποίο πρόκειται να μεταφερθεί) και το Destination WebElement (όπου το Source WebElement θα πέσει, δηλαδή το Destination WebElement), Η παρακάτω μέθοδος είναι μια προσαρμοσμένη μέθοδος ( τα οποία θα μπορούσατε να χρησιμοποιήσετε για να δημιουργήσετε τα Framework WebUtils σας) που εκτελούν το Drag And Drop στο Selenium και αυτή η μέθοδος παίρνει δύο ορίσματα ένα είναι Source WebElement και ένα άλλο είναι το Destination WebElement όπως αναφέρθηκε προηγουμένως: 

public void dragAndDrop(By source, By destination) {
   try {
       WebElement sourceElement = driver.findElement(source);
       WebElement destinationElement = driver.findElement(destination);
       Actions builder = new Actions(driver);
       Action dragAndDrop = builder.clickAndHold(sourceElement).moveToElement(destinationElement)
               .release(destinationElement).build();
       dragAndDrop.perform();
       BASE_LOGGER.info("Successfully performed the Drag and Drop action ");
   } catch (Exception e) {
       String exceptionData = e.getCause().getMessage();
       BASE_LOGGER.error("Error encountered i.e : " + exceptionData + " while performing DragAndDrop ");
   }
}

Για να μάθετε ολόκληρη την ιδέα σχετικά με το drag and drop και να φτάσετε σε όλες τις προσεγγίσεις για την εκτέλεση Drag and Drop στο Selenium, κάντε κλικ εδώ.

Κάντε κλικAndHold στο Σελήνιο 

Το ClickAndHold είναι μια άλλη σημαντική μέθοδος από την κατηγορία Actions (από το πακέτο org.openqa.selenium.interactions) στο Σελήνιο έως
Πρώτα εκτελέστε λειτουργία αριστερού κλικ πάνω από οποιοδήποτε webElement και κρατήστε το χωρίς να αφήσετε το ποντίκι.

Αυτή η μέθοδος χρησιμοποιείται κυρίως κατά την εκτέλεση των σεναρίων μεταφοράς και απόθεσης, παρακάτω είναι το δείγμα εικόνας κώδικα: 

Τάξη δράσεων σεληνίου
κάντε κλικ και κρατήστε πατημένο το μάθημα -Actions στο Σελήνιο

MoveToElement στο Σελήνιο

Το MoveToElement είναι μια μέθοδος από την κλάση Actions στο Selenium για την εκτέλεση της μετακίνησης σε άλλο WebElement (Destination Webelement), την οποία αυτή η μέθοδος λαμβάνει ως ένα αντίστοιχο επιχείρημα.

Αυτή η μέθοδος χρησιμοποιείται κυρίως κατά την εκτέλεση των σεναρίων μεταφοράς και απόθεσης, παρακάτω είναι το δείγμα εικόνας κώδικα: 

Μετακίνηση στο στοιχείο - Κατηγορία ενεργειών στο Σελήνιο

Κάντε διπλό κλικ στο Σελήνιο

Για να επαναλάβουμε τη λειτουργία διπλού κλικ μέσω ποντικιού, πρέπει να εκτελέσουμε διπλό κλικ μέσω κλάσης Actions στο Selenium και μπορούμε να το κάνουμε με την παρακάτω προσέγγιση: 

public void doubleClick(By locator) {
   try {
       WebElement element = driver.findElement(locator);
       Actions actions = new Actions(driver);
       actions.doubleClick(element).perform();
       BASE_LOGGER.info("Performed the double Click on the Element  : " + locator);
   } catch (StaleElementReferenceException e) {
       BASE_LOGGER.error("Element is not attached to the page document " + e.getCause().getMessage());
   } catch (NoSuchElementException e) {
       BASE_LOGGER.error("Element " + locator + " was not found in DOM " + e.getCause().getMessage());
   } catch (Exception e) {
       BASE_LOGGER.error("Element " + locator + " was not clickable " + e.getCause().getMessage());
   }
}

Το παραπάνω απόσπασμα κώδικα είναι μια μέθοδος που βασικά παίρνει ένα όρισμα ως Locator, δηλαδή το WebElement στο οποίο πρέπει να εκτελεστεί το διπλό κλικ. 

κλικ περιβάλλοντος ή δεξί κλικ σελήνιο

Για να επαναλάβουμε τη λειτουργία κλικ περιβάλλοντος ή δεξιού κλικ μέσω ποντικιού, πρέπει να εκτελέσουμε τη μέθοδο κλικ περιβάλλοντος μέσω της κλάσης Ενέργειες στο Σελήνιο και μπορούμε να το κάνουμε με την παρακάτω προσέγγιση: 

public void rightClick(By locator) {
   try {
       WebElement element = driver.findElement(locator);
       Actions actions = new Actions(driver);
       actions.contextClick(element).perform();
       BASE_LOGGER.info("Performed the context Click on the Element  : " + locator);
   } catch (StaleElementReferenceException e) {
       BASE_LOGGER.error("Element is not attached to the page document " + e.getCause().getMessage());
   } catch (NoSuchElementException e) {
       BASE_LOGGER.error("Element " + locator + " was not found in DOM " + e.getCause().getMessage());
   } catch (Exception e) {
       BASE_LOGGER.error("Element " + locator + " was not clickable " + e.getCause().getMessage());
   }
}

Το παραπάνω απόσπασμα κώδικα είναι μια μέθοδος που βασικά παίρνει ένα όρισμα ως Locator, δηλαδή το WebElement στο οποίο πρέπει να εκτελεστεί το διπλό κλικ. 

Παύση στο Σελήνιο 

Όποτε θέλουμε να εισαγάγουμε καθυστέρηση μεταξύ διαφορετικών ενεργειών, θα μπορούσαμε να χρησιμοποιήσουμε τη μέθοδο παύσης μεταξύ των ενεργειών Actions, όπως ας πούμε αν θέλουμε να έχουμε κάποια δευτερόλεπτα καθυστέρησης μεταξύ λειτουργίας μεταφοράς και απόθεσης, τότε μπορούμε να καλέσουμε την παύση ( ) Μέθοδος τάξης δράσεων στο Σελήνιο στην παρακάτω προσέγγιση: 

public void pauseBetweenActions(By source,By destination, int timeUnit) {
   try {
       WebElement sourceElement = driver.findElement(source);
       WebElement destinationElement = driver.findElement(destination);
       Actions builder = new Actions(driver);
       builder.clickAndHold(sourceElement).moveToElement(destinationElement).pause(timeUnit).release(destinationElement).build().perform();
       BASE_LOGGER.info("Successfully performed the Drag and Drop action ");
   } catch (Exception e) {
       String exceptionData = e.getCause().getMessage();
       BASE_LOGGER.error("Error encountered i.e : " + exceptionData + " while performing DragAndDrop ");
   }
}

Στην παραπάνω μέθοδο χρειάζονται τρία ορίσματα: μία πηγή WebElement, μια άλλη παράμετρος είναι το στοιχείο προορισμού και η τελευταία είναι για το TimeUnit, δηλαδή την χρονική καθυστέρηση που θέλουμε να εισαγάγουμε χρησιμοποιώντας την παύση () στο Selenium.

Τοποθετήστε το ποντίκι στο σελήνιο

Η λειτουργία Mouse Hover in Selenium μπορεί να επιτευχθεί χρησιμοποιώντας την κατηγορία Actions στο Selenium, βασικά, μόλις βρεθούμε σε εστίαση με οποιοδήποτε webElement και από εκεί, θέλουμε να τοποθετήσετε τον δείκτη του ποντικιού σας σε οποιοδήποτε άλλο στοιχείο από αυτήν τη λειτουργία Mouse Hover και αυτό το WebElement όπου θέλουμε να πάρουμε τον κέρσορα του ποντικιού που ονομάζεται Target WebElement. 

Ακολουθεί το απόσπασμα κώδικα για το ίδιο: 

public void mouseHover(By targetedLocator) {
   try {
       WebElement targetedElement = driver.findElement(targetedLocator);
       Actions builder = new Actions(driver);
       builder.moveToElement(targetedElement).build().perform();
       BASE_LOGGER.info("Successfully performed the Mouse hover in Selenium action ");
   } catch (Exception e) {
       String exceptionData = e.getCause().getMessage();
       BASE_LOGGER.error("Error encountered i.e : " + exceptionData + " while performing Mouse hover in Selenium ");
   }
}

Για να μάθετε για όλα Μπορείτε να ανατρέξετε στην εντολή Selenium webdriver εδώ .

Πληκτρολόγιο Ενέργειες - Κλάση ενεργειών στο Σελήνιο

Τι είναι οι ενέργειες πληκτρολογίου και πού απαιτείται:

Οι ενέργειες πληκτρολογίου σημαίνουν όπου οι λειτουργίες εκτελούνται απευθείας από ένα πληκτρολόγιο, όπως ας πούμε ότι προσπαθούμε να εκτελέσουμε μαζί το Contrl + A ή το Control + C ή να εκτελέσουμε το πλήκτρο Key up ή το Keydown από το πληκτρολόγιο ενώ αλληλεπιδράμε με τα WebElements.

Μπορούμε να εκτελέσουμε διάφορες αλληλεπιδράσεις πληκτρολογίου με τη βοήθεια της τάξης Actions στο Σελήνιο

sendKeys στο Σελήνιο :

Μπορούμε να εκτελέσουμε τη λειτουργία sendKeys με τη βοήθεια της κλάσης Actions στο Selenium με τον ακόλουθο τρόπο:

public void sendKeysWithActionClass(By locator) {
        try {
            WebElement element = driver.findElement(locator);
            Actions actions = new Actions(driver);
            actions.sendKeys("KeyBoard Data Entry ");

            // Perform Keyboard Actions ex pressing Control and c together

            actions.sendKeys(Keys.CONTROL);
            actions.sendKeys("c");
            actions.build().perform();
        } catch (Exception e) {
            String exceptionData = e.getCause().getMessage();
           
        }
    }

KeyUp στο Σελήνιο :

Παρομοίως, μπορούμε να εκτελέσουμε λειτουργίες KeyUp με την κατηγορία Actions στο Selenium με τον ακόλουθο τρόπο:

    public void keyUpWithActionClass(By locator) {
        try {
            WebElement element = driver.findElement(locator);
            Actions actions = new Actions(driver);
            actions.sendKeys("KeyBoard Data Entry ");

            // Perform Keyboard Actions ex pressing Control and c together with keyUp

            actions.keyUp(Keys.CONTROL);
            actions.sendKeys("c");
            actions.build().perform();
        } catch (Exception e) {
            String exceptionData = e.getCause().getMessage();
        }
    }

KeyDown στο Σελήνιο

Μπορούμε να εκτελέσουμε τη λειτουργία keyDown με τη βοήθεια της ξανά κλάσης Actions στο Selenium με την παρακάτω προσέγγιση:

public void keyDownWithActionClass(By locator) {

        try {
            WebElement element = driver.findElement(locator);
            Actions actions = new Actions(driver);
            actions.sendKeys("KeyBoard Data Entry ");

            // Perform Keyboard Actions ex pressing Control and V together with keyDown

            actions.keyDown(Keys.CONTROL);
            actions.sendKeys("v");
            actions.build().perform();
        } catch (Exception e) {
            String exceptionData = e.getCause().getMessage();

        }
    }

Συμπέρασμα: Με αυτά έχουμε τελειώσει εδώ με την κατηγορία Actions στο Selenium, Στο επερχόμενο σεμινάριο JavascriptExecutor στο Selenium με αρθρωτό αλλά εξαντλητικό τρόπο. Να μάθω Εξαντλητικά η εντολή Selenium μπορείτε να ανατρέξετε εδώ επίσης για να προετοιμαστείτε Κρίσιμες ερωτήσεις συνέντευξης σεληνίου μπορείτε να ανατρέξετε εδώ.

Σχετικά με την Debarghya

Myself Debarghya Roy, είμαι ένας μηχανικός ARCHITECT που συνεργάζεται με την εταιρεία Fortune 5 και έναν συνεισφέροντα ανοιχτού κώδικα, έχοντας περίπου 12 χρόνια εμπειρίας / εμπειρίας σε διάφορες τεχνολογίες.
Έχω εργαστεί με διάφορες τεχνολογίες, όπως Java, C #, Python, Groovy, UI Automation (Selenium), Mobile Automation (Appium), API / Backend Automation, Performance Engineering (JMeter, Locust), Security Automation (MobSF, OwAsp, Kali Linux) , Astra, ZAP κ.λπ.), RPA, Αυτοματισμός Μηχανικής Διαδικασίας, Αυτοματισμός Mainframe, Ανάπτυξη Back End με SpringBoot, Kafka, Redis, RabitMQ, ELK stack, GrayLog, Jenkins και επίσης έχοντας εμπειρία σε Cloud Technologies, DevOps κ.λπ.
Ζω στο Μπανγκαλόρ της Ινδίας με τη γυναίκα μου και έχω πάθος για το Blogging, τη μουσική, την κιθάρα και η Φιλοσοφία της ζωής μου είναι η Εκπαίδευση για Όλους που γέννησε το LambdaGeeks. Ας συνδεθούμε μέσω συνδέσμου - https://www.linkedin.com/in/debarghya-roy/

Αφήστε ένα σχόλιο

Η διεύθυνση email σας δεν θα δημοσιευθεί. Τα υποχρεωτικά πεδία σημειώνονται *

Lambda Geeks