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

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

Θα συζητήσουμε εδώ όλες τις αλληλεπιδράσεις στο Διαδίκτυο μέσω της κατηγορίας Actions στο Σελήνιο, για να ξεκινήσουμε με Μαθαίνουμε τις αλληλεπιδράσεις ποντικιού και θα προχωρήσουμε προς την κλάση αλληλεπιδράσεων KeyBoard με Actions στο Σελήνιο.
Αλληλεπιδράσεις ποντικιού - Κλάση δράσεων στο Σελήνιο
Σύρετε και αποθέστε σελήνιο
Η μεταφορά και απόθεση στο Σελήνιο μπορεί να γίνει σε τρεις διαφορετικές προσεγγίσεις με την κατηγορία "Ενέργειες" στο Σελήνιο:
Μεταφορά και απόθεση στο Σελήνιο με Κλάση δράσης στο Σελήνιο μέσω μεθόδου κατασκευής:
Πρέπει να έχουμε δύο 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(Ανά πηγή, Κατά προορισμό) { try { WebElement sourceElement = driver.findElement(source); WebElement destinationElement = driver.findElement(destination); Actions builder = new Actions(driver); Ενέργεια dragAndDrop = builder.clickAndHold(sourceElement).moveToElement(destinationElement) .release(destinationElement).build(); dragAndDrop.perform(); BASE_LOGGER.info("Η ενέργεια μεταφοράς και απόθεσης εκτελέστηκε με επιτυχία"); } catch (Exception e) { String exclusiveData = e.getCause().getMessage(); BASE_LOGGER.error("Παρουσιάστηκε σφάλμα π.χ. : " +exceptionData + " κατά την εκτέλεση DragAndDrop "); } }
Για να μάθετε ολόκληρη την ιδέα σχετικά με το drag and drop και να φτάσετε σε όλες τις προσεγγίσεις για την εκτέλεση Drag and Drop στο Selenium, κάντε κλικ εδώ.
Κάντε κλικAndHold στο Σελήνιο
Το ClickAndHold είναι μια άλλη σημαντική μέθοδος από την κατηγορία Actions (από το πακέτο org.openqa.selenium.interactions) στο Σελήνιο έως
Πρώτα εκτελέστε λειτουργία αριστερού κλικ πάνω από οποιοδήποτε webElement και κρατήστε το χωρίς να αφήσετε το ποντίκι.
Αυτή η μέθοδος χρησιμοποιείται κυρίως κατά την εκτέλεση των σεναρίων μεταφοράς και απόθεσης, παρακάτω είναι το δείγμα εικόνας κώδικα:

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("Εκτέλεσε το διπλό κλικ στο στοιχείο : " + εντοπιστής); } catch (StaleElementReferenceException e) { BASE_LOGGER.error("Το στοιχείο δεν είναι προσαρτημένο στο έγγραφο της σελίδας " + e.getCause().getMessage()); } catch (NoSuchElementException e) { BASE_LOGGER.error("Element " + locator + " δεν βρέθηκε στο DOM " + e.getCause().getMessage()); } catch (Exception e) { BASE_LOGGER.error("Element " + locator + " was notable 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("Εκτέλεσε το πλαίσιο Κάντε κλικ στο στοιχείο : " + εντοπιστής); } catch (StaleElementReferenceException e) { BASE_LOGGER.error("Το στοιχείο δεν είναι προσαρτημένο στο έγγραφο της σελίδας " + e.getCause().getMessage()); } catch (NoSuchElementException e) { BASE_LOGGER.error("Element " + locator + " δεν βρέθηκε στο DOM " + e.getCause().getMessage()); } catch (Exception e) { BASE_LOGGER.error("Element " + locator + " was notable clickable " + e.getCause().getMessage()); } }
Το παραπάνω απόσπασμα κώδικα είναι μια μέθοδος που βασικά παίρνει ένα όρισμα ως Locator, δηλαδή το WebElement στο οποίο πρέπει να εκτελεστεί το διπλό κλικ.
Παύση στο Σελήνιο
Όποτε θέλουμε να εισαγάγουμε καθυστέρηση μεταξύ διαφορετικών ενεργειών, θα μπορούσαμε να χρησιμοποιήσουμε τη μέθοδο παύσης μεταξύ των ενεργειών Actions, όπως ας πούμε αν θέλουμε να έχουμε κάποια δευτερόλεπτα καθυστέρησης μεταξύ λειτουργίας μεταφοράς και απόθεσης, τότε μπορούμε να καλέσουμε την παύση ( ) Μέθοδος τάξης δράσεων στο Σελήνιο στην παρακάτω προσέγγιση:
public void pauseBetweenActions (Ανά πηγή, Κατά προορισμό, 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("Η ενέργεια μεταφοράς και απόθεσης εκτελέστηκε με επιτυχία"); } catch (Exception e) { String exclusiveData = e.getCause().getMessage(); BASE_LOGGER.error("Παρουσιάστηκε σφάλμα π.χ. : " +exceptionData + " κατά την εκτέλεση 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("Εκτέλεσε επιτυχώς το Mouse Hover in Selenium action"); } catch (Exception e) { String exclusiveData = e.getCause().getMessage(); BASE_LOGGER.error("Παρουσιάστηκε σφάλμα π.χ. : " +exceptionData + " κατά την εκτέλεση του ποντικιού στο 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("Εισαγωγή δεδομένων πληκτρολογίου"); // Εκτελέστε ενέργειες πληκτρολογίου πατώντας Control και c μαζί actions.sendKeys(Keys.CONTROL); actions.sendKeys("c"); actions.build().perform(); } catch (Exception e) { String exclusiveData = 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("Εισαγωγή δεδομένων πληκτρολογίου"); // Εκτελέστε ενέργειες πληκτρολογίου πατώντας Control και c μαζί με keyUp actions.keyUp(Keys.CONTROL); actions.sendKeys("c"); actions.build().perform(); } catch (Exception e) { String exclusiveData = 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("Εισαγωγή δεδομένων πληκτρολογίου"); // Εκτελέστε ενέργειες πληκτρολογίου πατώντας Control και V μαζί με keyDown actions.keyDown(Keys.CONTROL); actions.sendKeys("v"); actions.build().perform(); } catch (Exception e) { String exclusiveData = e.getCause().getMessage(); } }
Συμπέρασμα: Με αυτά τελειώσαμε εδώ με την κλάση Actions στο Selenium ,Στο επερχόμενο σεμινάριο JavascriptExecutor σε σελήνιο με αρθρωτό αλλά εξαντλητικό τρόπο. Να μάθω Εξαντλητικά η εντολή Selenium μπορείτε να ανατρέξετε εδώ επίσης για να προετοιμαστείτε Κρίσιμες ερωτήσεις συνέντευξης σεληνίου μπορείτε να ανατρέξετε εδώ.