portaldacalheta.pt
  • Κύριος
  • Επιστήμη Δεδομένων Και Βάσεις Δεδομένων
  • Κερδοφορία & Αποδοτικότητα
  • Σχεδιασμός Ux
  • Κινητό
Τεχνολογία

Αυτοματισμός σεληνίου: Μοντέλο αντικειμένου σελίδας και εργοστάσιο σελίδας



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

Διά μέσου αυτοματοποίηση δοκιμής , είναι δυνατό να μειωθεί το κόστος της διόρθωσης σφαλμάτων και να επιτευχθεί συνολική βελτίωση στο διασφάλιση ποιότητας λογισμικού (QA) διαδικασία. Με τις κατάλληλες δοκιμές, οι προγραμματιστές έχουν την ευκαιρία να βρουν και να επιλύσουν σφάλματα ακόμη και πριν φτάσουν στο QA. Ο αυτοματοποιημένος έλεγχος μας βοηθά περαιτέρω να αυτοματοποιήσουμε τις δοκιμαστικές περιπτώσεις και τις λειτουργίες που συνεχώς υποχωρούν. Με αυτόν τον τρόπο τα QA έχουν περισσότερο χρόνο στη δοκιμή άλλων τμημάτων της εφαρμογής. Επιπλέον, αυτό βοηθά στη διασφάλιση της ποιότητας του προϊόντος σε κυκλοφορίες παραγωγής. Ως αποτέλεσμα, λαμβάνουμε προϊόντα που είναι αποτελεσματικά πιο σταθερά και μια διαδικασία QA που είναι πιο αποτελεσματική.



Ο αυτοματισμός Selenium απλοποιεί τον αυτοματοποιημένο έλεγχο για εφαρμογές ιστού



Το Selenium απλοποιεί τον αυτοματοποιημένο έλεγχο για εφαρμογές ιστού Τιτίβισμα

Παρόλο που η σύνταξη αυτοματοποιημένων δοκιμών μπορεί να φαίνεται εύκολη υπόθεση για προγραμματιστές και μηχανικούς, εξακολουθεί να υπάρχει η πιθανότητα να καταλήξουμε σε δοκιμές που δεν εφαρμόστηκαν καλά και το υψηλό κόστος της συντήρησης κώδικα σε οποιαδήποτε ευέλικτη διαδικασία. Η προσπάθεια συνεχούς παράδοσης αλλαγών ή χαρακτηριστικών σε οποιοδήποτε ευκίνητο έργο ανάπτυξης μπορεί να αποδειχθεί δαπανηρή όταν πρόκειται για δοκιμές. Η αλλαγή ενός στοιχείου σε μια ιστοσελίδα στην οποία βασίζονται 20 δοκιμές θα απαιτήσει από ένα να περάσει από αυτές τις 20 ρουτίνες δοκιμών και να ενημερώσει το καθένα για να προσαρμοστεί σε αυτήν την νέα εισαγωγή. Όχι μόνο αυτό μπορεί να είναι πραγματικά χρονοβόρο, αλλά και ένας σοβαρός παράγοντας αποτροπής όταν πρόκειται για την εφαρμογή αυτοματοποιημένων δοκιμών από νωρίς.



Αλλά, τι γίνεται αν θα μπορούσαμε να κάνουμε την αλλαγή μόνο σε ένα μέρος και να την χρησιμοποιήσουμε κάθε σχετική ρουτίνα δοκιμών; Σε αυτό το άρθρο, θα ρίξουμε μια ματιά σε αυτοματοποιημένες δοκιμές στο Σελήνιο και πώς μπορούμε να χρησιμοποιήσουμε μοντέλα αντικειμένων σελίδας για να γράψουμε συντηρήσιμες και επαναχρησιμοποιήσιμες ρουτίνες δοκιμών.

Μοντέλο αντικειμένου σελίδας στο Σελήνιο

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



clickLoginButton(); setCredentials(user_name,user_password);

Δεδομένου ότι οι γνωστές μέθοδοι σε τάξεις είναι ευανάγνωστες, αυτό λειτουργεί ως ένας κομψός τρόπος για να εφαρμόσετε δοκιμαστικές ρουτίνες που είναι τόσο ευανάγνωστες όσο και ευκολότερες στη συντήρηση ή την ενημέρωση στο μέλλον. Για παράδειγμα:

Για να υποστηρίξουμε το μοντέλο αντικειμένου σελίδας, χρησιμοποιούμε Εργοστάσιο σελίδας . Το Page Factory in Selenium είναι μια επέκταση του Page Object και μπορεί να χρησιμοποιηθεί με διάφορους τρόπους. Σε αυτήν την περίπτωση, θα χρησιμοποιήσουμε το Εργοστάσιο σελίδας για να προετοιμάσουμε στοιχεία ιστού που ορίζονται σε τάξεις ιστοσελίδων ή αντικείμενα σελίδας.



Τα μαθήματα ιστοσελίδων ή τα αντικείμενα σελίδας που περιέχουν στοιχεία ιστού πρέπει να αρχικοποιηθούν χρησιμοποιώντας το Page Factory πριν μπορέσουν να χρησιμοποιηθούν οι μεταβλητές στοιχείων ιστού. Αυτό μπορεί να γίνει απλά με τη χρήση του initElements λειτουργία στο PageFactory:

Το σφάλμα τύπου javascript δεν είναι συνάρτηση
LoginPage page = new LoginPage(driver); PageFactory.initElements(driver, page);

Ή, ακόμη πιο απλό:



LoginPage page = PageFactory.intElements(driver,LoginPage.class)

Ή, μέσα στον κατασκευαστή κλάσης ιστοσελίδας:

public LoginPage(WebDriver driver) { this.driver = driver; PageFactory.initElements(driver, this); }

Το Εργοστάσιο σελίδας θα προετοιμάσει κάθε Στοιχείο Web μεταβλητή με αναφορά σε ένα αντίστοιχο στοιχείο στην πραγματική ιστοσελίδα που βασίζεται σε διαμορφωμένους 'εντοπιστές'. Αυτό γίνεται με τη χρήση του @FindBy σχολιασμοί. Με αυτόν τον σχολιασμό, μπορούμε να καθορίσουμε μια στρατηγική αναζήτησης του στοιχείου, μαζί με τις απαραίτητες πληροφορίες για την αναγνώρισή του:



@FindBy(how=How.NAME, using='username') private WebElement user_name;

Κάθε φορά που καλείται μια μέθοδος σε αυτό Στοιχείο Web μεταβλητή, το πρόγραμμα οδήγησης θα το βρει πρώτα στην τρέχουσα σελίδα και στη συνέχεια θα προσομοιώσει την αλληλεπίδραση. Σε περίπτωση που εργαζόμαστε με μια απλή σελίδα, γνωρίζουμε ότι θα βρούμε το στοιχείο στη σελίδα κάθε φορά που το αναζητάμε, και επίσης γνωρίζουμε ότι τελικά θα απομακρυνθούμε από αυτήν τη σελίδα και δεν θα επιστρέψουμε σε αυτήν, μπορούμε να αποθηκεύσουμε την κρυφή μνήμη το αναζητημένο πεδίο χρησιμοποιώντας έναν άλλο απλό σχολιασμό:

@FindBy(how=How.NAME, using='username') @CacheLookup private WebElement user_name;

Αυτός ο ολόκληρος ορισμός της μεταβλητής WebElement μπορεί να αντικατασταθεί με την πολύ πιο περιεκτική μορφή της:



@FindBy(name='username') private WebElement user_name;

ο @FindBy Ο σχολιασμός υποστηρίζει μερικές άλλες στρατηγικές που κάνουν τα πράγματα λίγο πιο εύκολα:

id, name, className, css, tagName, linkText, partialLinkText, xpath @FindBy(id='username') private WebElement user_name; @FindBy(name='passsword') private WebElement user_password; @FindBy(className='h3') private WebElement label; @FindBy(css=”#content”) private WebElement text;

Μόλις αρχικοποιηθεί, αυτές οι μεταβλητές WebElement μπορούν στη συνέχεια να χρησιμοποιηθούν για την αλληλεπίδραση με τα αντίστοιχα στοιχεία της σελίδας. Ο ακόλουθος κωδικός, για παράδειγμα:

user_password.sendKeys(password);

… Στείλτε τη δεδομένη ακολουθία πληκτρολογήσεων στο πεδίο κωδικού πρόσβασης στη σελίδα και ισοδυναμεί με:

driver.findElement(By.name(“user_password”)).sendKeys(password);

Προχωρώντας, θα συναντήσετε συχνά καταστάσεις όπου πρέπει να βρείτε μια λίστα στοιχείων σε μια σελίδα, και αυτό είναι πότε @FindBys έρχεται σε πρακτικό:

@FindBys(@FindBy(css=”div[class=’yt-lockup-tile yt-lockup-video’]”))) private List videoElements;

Ο παραπάνω κωδικός θα βρει όλα τα div στοιχεία που έχουν δύο ονόματα τάξεων 'yt-lockup-tile' και 'yt-lockup-video'. Μπορούμε να το απλοποιήσουμε ακόμη περισσότερο αντικαθιστώντας το με το ακόλουθο:

@FindBy(how=How.CSS,using='div[class=’yt-lockup-tile yt-lockup-video’]') private List videoElements;

Επιπλέον, μπορείτε να χρησιμοποιήσετε @FindAll με πολλαπλά @FindBy σχολιασμοί για αναζήτηση στοιχείων που ταιριάζουν με οποιονδήποτε από τους συγκεκριμένους εντοπιστές:

@FindAll({@FindBy(how=How.ID, using=”username”), @FindBy(className=”username-field”)}) private WebElement user_name;

Τώρα που μπορούμε να αντιπροσωπεύσουμε ιστοσελίδες ως τάξεις Java και να χρησιμοποιήσουμε το Page Factory για να ξεκινήσουμε Στοιχείο Web μεταβλητές εύκολα, είναι καιρός να δούμε πώς μπορούμε να γράψουμε απλές δοκιμές σεληνίου χρησιμοποιώντας το μοτίβο Page Object και το Page Factory.

Simple Selenium Test Automation Project στην Ιάβα

Για το σεμινάριο μοντέλου αντικειμένου σελίδας, ας αυτοματοποιήσουμε την εγγραφή του προγραμματιστή στο ApeeScape. Για να γίνει αυτό, πρέπει να αυτοματοποιήσουμε τα ακόλουθα βήματα:

  • Επισκεφτείτε το www.toptal.com

  • Κάντε κλικ στο κουμπί 'Εφαρμογή ως προγραμματιστής'

  • Στη σελίδα πύλης πρώτα ελέγξτε αν έχει ανοίξει

  • Κάντε κλικ στο κουμπί 'Join ApeeScape'

  • Συμπληρώστε τη φόρμα

  • Υποβάλετε τη φόρμα κάνοντας κλικ στο κουμπί 'Join ApeeScape'

Δημιουργία έργου

  • Λήψη και εγκατάσταση Java JDK

  • Λήψη και εγκατάσταση Ιδέα InteliJ

  • Δημιουργήστε ένα νέο έργο Maven

  • Συνδέστε το 'Project SDK' στο JDK σας, π.χ. στα Windows 'C: Program Files Java jdkxxx'

  • Ρύθμιση groupId και artifactId:

SeleniumTEST Test
  • Προσθέστε εξαρτήσεις Selenium και JUnit Maven στο αρχείο POM του έργου σας
junit junit ${junit.version} test org.seleniumhq.selenium selenium-firefox-driver ${selenium.version} org.seleniumhq.selenium selenium-support ${selenium.version} org.seleniumhq.selenium selenium-java ${selenium.version}

Αντικαταστήστε την έκδοση Selenium και την έκδοση JUnit με τους τελευταίους αριθμούς έκδοσης που μπορείτε να βρείτε αναζητώντας το JUnit Maven στο Google και στον ιστότοπο του Selenium.

Σε αυτό το σημείο, εάν είναι ενεργοποιημένη η αυτόματη δημιουργία, οι εξαρτήσεις θα πρέπει να ξεκινήσουν αυτόματα τη λήψη. Εάν όχι, απλώς ενεργοποιήστε το Plugins> install> install: install κάτω από τον πίνακα Maven Projects στη δεξιά πλευρά του IntelliJ Idea IDE.

στιγμιότυπο οθόνης IDE δοκιμής σεληνίου

Μόλις το έργο ξεκινήσει, μπορούμε να αρχίσουμε να δημιουργούμε το δοκιμαστικό πακέτο μας στο 'src / test / java'. Ονομάστε το πακέτο 'com.toptal' και δημιουργήστε δύο ακόμη πακέτα κάτω από αυτό: 'com.toptal.webpages' και 'com.toptal.tests'.

στιγμιότυπο οθόνης σεμιναρίου δοκιμών

Θα διατηρήσουμε τις κλάσεις αντικειμένου σελίδας / εργοστασίου σελίδας κάτω από το 'com.toptal.webpages' και τις ρουτίνες δοκιμής στην ενότητα 'com.toptal.tests'.

Τώρα, μπορούμε να αρχίσουμε να δημιουργούμε τις τάξεις αντικειμένων σελίδας.

Αντικείμενο αρχικής σελίδας

Το πρώτο που πρέπει να εφαρμόσουμε είναι για την αρχική σελίδα του ApeeScape (www.toptal.com). Δημιουργήστε μια τάξη στην ενότητα 'com.toptal.webpages' και ονομάστε την 'Αρχική σελίδα'.

package com.toptal.webpages; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.support.FindBy; import org.openqa.selenium.support.How; import org.openqa.selenium.support.PageFactory; public class HomePage { private WebDriver driver; //Page URL private static String PAGE_URL='https://www.toptal.com'; //Locators //Apply as Developer Button @FindBy(how = How.LINK_TEXT, using = 'APPLY AS A DEVELOPER') private WebElement developerApplyButton; //Constructor public HomePage(WebDriver driver){ this.driver=driver; driver.get(PAGE_URL); //Initialise Elements PageFactory.initElements(driver, this); } public void clickOnDeveloperApplyButton(){ developerApplyButton.click(); } }

Καθορισμός στοιχείων εντοπισμού

Στην αρχική σελίδα του ApeeScape μας ενδιαφέρει ιδιαίτερα ένα στοιχείο, και αυτό είναι το κουμπί 'Εφαρμογή ως προγραμματιστής'. Μπορούμε να βρούμε αυτό το στοιχείο ταιριάζοντας με το κείμενο, το οποίο κάνουμε παραπάνω. Ενώ η μοντελοποίηση ιστοσελίδων ως τάξεων αντικειμένων σελίδας, η εύρεση και ο προσδιορισμός στοιχείων μπορεί συχνά να γίνει δουλειά. Με τα εργαλεία εντοπισμού σφαλμάτων του Google Chrome ή του Firefox, αυτό μπορεί να γίνει ευκολότερο. Κάνοντας δεξί κλικ σε οποιοδήποτε στοιχείο μιας σελίδας, μπορείτε να ενεργοποιήσετε την επιλογή 'Επιθεώρηση στοιχείου' από το μενού περιβάλλοντος για να βρείτε λεπτομερείς πληροφορίες σχετικά με το στοιχείο.

Ένας κοινός (και ο προτιμώμενος) τρόπος μου είναι να βρω στοιχεία χρησιμοποιώντας τους Firefox Επέκταση FireBug , σε συνδυασμό με το πρόγραμμα οδήγησης του Firefox στο Selenium. Αφού εγκαταστήσετε και ενεργοποιήσετε την επέκταση FireBug, μπορείτε να κάνετε δεξί κλικ στη σελίδα και να επιλέξετε 'Επιθεώρηση στοιχείου με FireBug' για να ανοίξετε το FireBug. Από την καρτέλα HTML του FireBug, μπορείτε να αντιγράψετε το XPath, τη διαδρομή CSS, το όνομα ετικέτας ή το 'Id' (εάν υπάρχει) οποιουδήποτε στοιχείου στη σελίδα.

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

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

@FindBy(xpath = '/html/body/div[1]/div/div/header/div/h1') WebElement heading;

Ή για να διατηρήσουμε τα πράγματα απλά, μπορούμε να χρησιμοποιήσουμε το όνομα ετικέτας 'h1' εδώ, αρκεί να προσδιορίζει μοναδικά το στοιχείο που μας ενδιαφέρει:

@FindBy(tagName = 'h1') WebElement heading;

Αντικείμενο σελίδας DeveloperPortalPage

Στη συνέχεια, χρειαζόμαστε ένα αντικείμενο σελίδας που αντιπροσωπεύει τη σελίδα της πύλης προγραμματιστή, στην οποία μπορούμε να φτάσουμε κάνοντας κλικ στο κουμπί 'Εφαρμογή ως προγραμματιστή'.

Σε αυτήν τη σελίδα, έχουμε δύο στοιχεία ενδιαφέροντος. Για να προσδιορίσουμε εάν η σελίδα έχει φορτωθεί, θέλουμε να επαληθεύσουμε την ύπαρξη της επικεφαλίδας. Και θέλουμε επίσης ένα Στοιχείο Web πεδίο για το κουμπί 'Join ApeeScape'.

package com.toptal.webpages; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.support.FindBy; import org.openqa.selenium.support.PageFactory; public class DeveloperPortalPage { private WebDriver driver; @FindBy(xpath = '/html/body/div[1]/div/div/header/div/h1') private WebElement heading; @FindBy(linkText = 'JOIN TOPTAL') private WebElement joinApeeScapeButton; //Constructor public DeveloperPortalPage (WebDriver driver){ this.driver=driver; //Initialise Elements PageFactory.initElements(driver, this); } //We will use this boolean for assertion. To check if page is opened public boolean isPageOpened(){ return heading.getText().toString().contains('Developer portal'); } public void clikOnJoin(){ joinApeeScapeButton.click(); } }

Αντικείμενο σελίδας DeveloperApplyPage

Και τέλος, για το αντικείμενο της τρίτης και της τελευταίας σελίδας για αυτό το έργο, ορίζουμε ένα που αντιπροσωπεύει τη σελίδα που περιέχει τη φόρμα αίτησης προγραμματιστή. Επειδή πρέπει να ασχοληθούμε με έναν αριθμό πεδίων φόρμας εδώ, ορίζουμε ένα Στοιχείο Web μεταβλητή για κάθε πεδίο φόρμας. Βρίσκουμε κάθε πεδίο με το «αναγνωριστικό» τους και ορίζουμε ειδικές μεθόδους ρύθμισης για κάθε πεδίο που προσομοιώνουν πατήματα πλήκτρων για τα αντίστοιχα πεδία.

package com.toptal.webpages; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.support.FindBy; import org.openqa.selenium.support.PageFactory; public class DeveloperApplyPage { private WebDriver driver; @FindBy(tagName = 'h1') WebElement heading; @FindBy(id='developer_email') WebElement developer_email; @FindBy(id = 'developer_password') WebElement developer_password; @FindBy(id = 'developer_password_confirmation') WebElement developer_password_confirmation; @FindBy(id = 'developer_full_name') WebElement developer_full_name; @FindBy(id = 'developer_skype') WebElement developer_skype; @FindBy(id ='save_new_developer') WebElement join_toptal_button; //Constructor public DeveloperApplyPage(WebDriver driver){ this.driver=driver; //Initialise Elements PageFactory.initElements(driver, this); } public void setDeveloper_email(String email){ developer_email.clear(); developer_email.sendKeys(email); } public void setDeveloper_password(String password){ developer_password.clear(); developer_password.sendKeys(password); } public void setDeveloper_password_confirmation(String password_confirmation){ developer_password_confirmation.clear(); developer_password_confirmation.sendKeys(password_confirmation); } public void setDeveloper_full_name (String fullname){ developer_full_name.clear(); developer_full_name.sendKeys(fullname); } public void setDeveloper_skype (String skype){ developer_skype.clear(); developer_skype.sendKeys(skype); } public void clickOnJoin(){ join_toptal_button.click(); } public boolean isPageOpened(){ //Assertion return heading.getText().toString().contains('Apply to join our network as a developer'); } }

Γράφοντας μια απλή δοκιμή σεληνίου

Με τις κατηγορίες αντικειμένων σελίδας που αντιπροσωπεύουν τις σελίδες μας και τις αλληλεπιδράσεις των χρηστών ως μεθόδους τους, μπορούμε πλέον να γράψουμε την απλή ρουτίνα δοκιμής μας ως μια σειρά απλών κλήσεων και ισχυρισμών μεθόδου.

package com.toptal.tests; import com.toptal.webpages.DeveloperApplyPage; import com.toptal.webpages.DeveloperPortalPage; import com.toptal.webpages.HomePage; import org.junit.After; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; import java.net.URL; import java.util.concurrent.TimeUnit; public class ApplyAsDeveloperTest { WebDriver driver; @Before public void setup(){ //use FF Driver driver = new FirefoxDriver(); driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); } @Test public void applyAsDeveloper() { //Create object of HomePage Class HomePage home = new HomePage(driver); home.clickOnDeveloperApplyButton(); //Create object of DeveloperPortalPage DeveloperPortalPage devportal= new DeveloperPortalPage(driver); //Check if page is opened Assert.assertTrue(devportal.isPageOpened()); //Click on Join ApeeScape devportal.clikOnJoin(); //Create object of DeveloperApplyPage DeveloperApplyPage applyPage =new DeveloperApplyPage(driver); //Check if page is opened Assert.assertTrue(applyPage.isPageOpened()); //Fill up data applyPage.setDeveloper_email(' [email protected] '); applyPage.setDeveloper_full_name('Dejan Zivanovic Automated Test'); applyPage.setDeveloper_password('password123'); applyPage.setDeveloper_password_confirmation('password123'); applyPage.setDeveloper_skype('automated_test_skype'); //Click on join //applyPage.clickOnJoin(); } @After public void close(){ driver.close(); } }

Εκτέλεση της δοκιμής

Σε αυτό το σημείο, η δομή του έργου σας θα πρέπει να έχει την εξής μορφή:

παράδειγμα δοκιμής σεληνίου

Εάν θέλετε να εκτελέσετε τη δοκιμή, επιλέξτε 'ApplyAsDeveloperTest' από το δέντρο, κάντε δεξί κλικ πάνω του και, στη συνέχεια, επιλέξτε Εκτελέστε το «ApplyAsDeveloperTest» .

παράδειγμα δοκιμής σεληνίου

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

παράδειγμα δοκιμής σεληνίου

συμπέρασμα

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

Ελπίζω ότι κατάφερα να σας δείξω πώς να γράψετε έναν ωραίο και καθαρό κώδικα δοκιμής που είναι εύκολο να διατηρηθεί. Θα τελειώσω το άρθρο με το αγαπημένο μου απόσπασμα QA:

Σκεφτείτε δύο φορές, κωδικοποιήστε μία φορά!

Σχετίζεται με: Ξύσιμο Ιστού με πρόγραμμα περιήγησης χωρίς κεφαλή: Ένα εκπαιδευτικό κουκλοθέατρο

Κατανόηση των βασικών

Τι είναι το μοντέλο αντικειμένου σελίδας στο Σελήνιο;

Το μοντέλο Object Object είναι ένα σχέδιο σχεδιασμού αντικειμένων στο Selenium. Οι ιστοσελίδες παρουσιάζονται ως τάξεις και τα στοιχεία στη σελίδα ορίζονται ως μεταβλητές στην τάξη, έτσι οι αλληλεπιδράσεις χρηστών μπορούν στη συνέχεια να εφαρμοστούν ως μέθοδοι στην τάξη.

Γιατί χρησιμοποιούμε το Σελήνιο;

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

Τι είναι η δοκιμή Selenium;

Η δοκιμή Selenium είναι η διαδικασία χρήσης ενός συνόλου εργαλείων λογισμικού Selenium για τη διευκόλυνση της αυτοματοποίησης των δοκιμών. Στις περισσότερες περιπτώσεις, οι μηχανικοί λογισμικού επιλέγουν ένα έως δύο εργαλεία Selenium για αυτήν την εργασία, αλλά μπορούν να χρησιμοποιηθούν πρόσθετα εργαλεία για την κάλυψη διαφορετικών αναγκών.

Ποια είναι η διαφορά μεταξύ του μοντέλου αντικειμένου σελίδας και του εργοστασίου σελίδας;

Το μοντέλο αντικειμένου σελίδας είναι ένα μοτίβο σχεδίασης, όπως περιγράφηκε προηγουμένως σε αυτήν την ενότητα. Το Page Factory επεκτείνεται στη λειτουργικότητα του μοντέλου Page Object εισάγοντας πιο προηγμένες δυνατότητες. Επιτρέπει στους χρήστες να αρχικοποιήσουν συγκεκριμένα στοιχεία στο μοντέλο αντικειμένου σελίδας, χρησιμοποιώντας σχολιασμούς.

Εκμάθηση 2D Κάμερων στο Unity: Ένα σεμινάριο για προγραμματιστές παιχνιδιών

Πίσω Μέρος

Εκμάθηση 2D Κάμερων στο Unity: Ένα σεμινάριο για προγραμματιστές παιχνιδιών
Πώς να προσεγγίσετε προβλήματα μηχανικής εκμάθησης

Πώς να προσεγγίσετε προβλήματα μηχανικής εκμάθησης

Πίσω Μέρος

Δημοφιλείς Αναρτήσεις
Senior Full-stack Engineer, Talent Post-hire Team
Senior Full-stack Engineer, Talent Post-hire Team
Εισαγωγή στην επεξεργασία εικόνων Python στην Υπολογιστική Φωτογραφία
Εισαγωγή στην επεξεργασία εικόνων Python στην Υπολογιστική Φωτογραφία
Λειτουργίες παραθύρου εισαγωγής στο SQL
Λειτουργίες παραθύρου εισαγωγής στο SQL
Εγκατάσταση του Django στο IIS: Ένα βήμα προς βήμα εκπαιδευτικό πρόγραμμα
Εγκατάσταση του Django στο IIS: Ένα βήμα προς βήμα εκπαιδευτικό πρόγραμμα
Φαίνεται ενθουσιασμό - Μέσα στην αναπτυσσόμενη βιομηχανία ομορφιάς
Φαίνεται ενθουσιασμό - Μέσα στην αναπτυσσόμενη βιομηχανία ομορφιάς
 
Αρχιτεκτονική προσανατολισμένη στην υπηρεσία με AWS Lambda: Ένα βήμα προς βήμα εκπαιδευτικό πρόγραμμα
Αρχιτεκτονική προσανατολισμένη στην υπηρεσία με AWS Lambda: Ένα βήμα προς βήμα εκπαιδευτικό πρόγραμμα
Σχεδιασμός παρουσίασης και τέχνη της οπτικής αφήγησης
Σχεδιασμός παρουσίασης και τέχνη της οπτικής αφήγησης
Μια βαθιά ματιά στο JSON εναντίον XML, Μέρος 3: XML και το μέλλον του JSON
Μια βαθιά ματιά στο JSON εναντίον XML, Μέρος 3: XML και το μέλλον του JSON
5 Ερωτήσεις που πρέπει να υποβάλει ένα Master Scrum πριν εγγραφείτε σε μια εκκίνηση
5 Ερωτήσεις που πρέπει να υποβάλει ένα Master Scrum πριν εγγραφείτε σε μια εκκίνηση
Τρεις αρχές ανάπτυξης δεδομένων αποθήκης
Τρεις αρχές ανάπτυξης δεδομένων αποθήκης
Δημοφιλείς Αναρτήσεις
  • Αρχές ορισμού σχεδιαστικού ρυθμού
  • τι είναι μια s corp llc
  • σε τι χρησιμεύει το adobe xd
  • ποια βάση δεδομένων να χρησιμοποιήσετε για την εφαρμογή Android
  • διαφορά μεταξύ ac και s corp
  • μάθουν στόχο γ ή ταχεία
Κατηγορίες
  • Επιστήμη Δεδομένων Και Βάσεις Δεδομένων
  • Κερδοφορία & Αποδοτικότητα
  • Σχεδιασμός Ux
  • Κινητό
  • © 2022 | Ολα Τα Δικαιώματα Διατηρούνται

    portaldacalheta.pt