Σε αυτό το σεμινάριο ερωτήσεων συνέντευξης σεληνίου, θα καλύψουμε όλες τις κρίσιμες ερωτήσεις ερωτήσεων συνέντευξης Selenium μαζί με προηγμένες ερωτήσεις συνέντευξης πλαισίου αυτοματισμού Selenium. Αυτό το σεμινάριο χωρίζεται σε τρία τμήματα:
Ερωτήσεις συνέντευξης πλαισίου Selenium
Προηγούμενες ερωτήσεις συνέντευξης σεληνίου
Ερωτήσεις συνέντευξης για ενδιάμεσο σελήνιο
ΣΗΜΕΊΩΣΗ : Το επίκεντρο αυτού του σεμιναρίου ερωτήσεων και απαντήσεων στη συνέντευξη Selenium είναι να συζητηθούν τα πιο κρίσιμα και πολύπλοκα ερωτηματολόγια, καθώς ίσως γνωρίζετε ήδη τα βασικά ερωτηματολόγια.
Αρχικά θα ξεκινήσουμε με ερωτήσεις και απαντήσεις συνέντευξης στο Advance Selenium Framework και στη συνέχεια θα προχωρήσουμε μπροστά σε ερωτήσεις και απαντήσεις συνέντευξης σε κρίσιμα / Advanced Selenium και στη συνέχεια θα ολοκληρώσουμε αυτό το σεμινάριο με ενδιάμεσα επίπεδα ώστε να μπορείτε να προετοιμαστείτε καλά.

Ερωτήσεις συνέντευξης πλαισίου Selenium
Προηγούμενες ερωτήσεις συνέντευξης Selenium
Ερωτήσεις συνέντευξης για ενδιάμεσο σελήνιο
Ερωτήσεις συνέντευξης πλαισίου Selenium:
Πόσα δημοφιλή είδη πλαισίου σεληνίου υπάρχουν;
Υπάρχουν τέσσερις διαφορετικοί τύποι πλαισίων σεληνίου, που είναι:
Πόσες διαφορετικές προσεγγίσεις υπάρχουν για το σχεδιασμό του πλαισίου μοντέλου αντικειμένου σελίδας;
Τι είναι το Page factory στο σελήνιο;
Το PageFactory είναι μια τάξη από τη βιβλιοθήκη Selenium από ένα πακέτο που ονομάζεται org.openqa.selenium.support που βοηθά στο σχεδιασμό του μοτίβου σχεδίασης αντικειμένου σελίδας στο πλαίσιο Page Object Model, το οποίο έχει λίγες υλοποιήσεις όπως:
Ποια είναι η βασική διαφορά σχεδιασμού μεταξύ μοντέλου αντικειμένου κλασικής σελίδας και μοντέλου προσαρμοσμένου αντικειμένου σελίδας;
Έτσι, κάθε ιστοσελίδα πρέπει να έχει μια διεπαφή για την αποθήκευση εντοπιστών και 1 τάξη για τις λειτουργίες ιστού επιπέδου σελίδας και τους ισχυρισμούς σεβασμού τους
Ποια είναι η αρχή σχεδιασμού του Page Object Model Framework;
Η αρχή σχεδιασμού του πλαισίου μοντέλου αντικειμένου σελίδας βασίζεται σε αρχές ή έννοιες, οι οποίες είναι:
Έτσι, Όλες οι ενέργειες της σελίδας (διαφορετικές λειτουργίες της λειτουργικότητας της ιστοσελίδας) βρίσκονται στις αντίστοιχες τάξεις σελίδων.
Αναφέρετε τις βασικές διαφορές μεταξύ του μοντέλου αντικειμένου σελίδας και του μοντέλου υβριδικού αντικειμένου σελίδας;
Η διαφορά μεταξύ του μοντέλου αντικειμένου σελίδας και του υβριδικού μοντέλου αντικειμένου σελίδας είναι ότι το υβριδικό μοντέλο αντικειμένου σελίδας βασίζεται στη σχεδίαση πλαισίου μοντέλου αντικειμένου σελίδας μαζί με τις εκτεταμένες δυνατότητες του πλαισίου βάσει δεδομένων και υποστηρίζει μια μεγάλη ποικιλία των βοηθητικών λειτουργιών δεδομένων όπως παρακάτω :
Ποια είναι η γλώσσα Parser που χρησιμοποιείται στο πλαίσιο Cucumber -BDD;
Το πρόγραμμα ανάλυσης γλώσσας που χρησιμοποιείται στο πλαίσιο Cucumber -BDD είναι το Gherkin.
Τι είναι η γλώσσα Gherkin;
Το Gherkin είναι DSL (Domain Specific Language) και Αγγλικά σαν γλώσσα, η οποία είναι πολύ ευανάγνωστη και κατανοητή (δηλ., Δώστε (), όταν (), τότε () κ.λπ.)
Τι εννοείτε με το δεδομένο () στο Gherkin;
Η μέθοδος Given () δηλώνει ότι δίνεται ή δηλώνεται κάποια κατάσταση ή σενάριο.
Τι εννοείς όταν () στο Gherkin;
Όταν () σημαίνει όταν εκτελείτε ορισμένες λειτουργίες.
Τι εννοείς τότε () στο Gherkin;
τότε () χρησιμοποιείται ως ισχυρισμοί μετά την εκτέλεση των πράξεων με δεδομένο (). όταν ().
Τι εργαλείο CI χρησιμοποιείτε ως μέρος του πλαισίου;
Χρησιμοποιούμε το Jenkins (κυρίως) ως εργαλείο ανοιχτού κώδικα CI.
Τι εργαλείο κατασκευής χρησιμοποιείτε ως μέρος του πλαισίου;
Χρησιμοποιούμε εργαλεία κατασκευής όπως Maven / Gradle / ant (είχε χρησιμοποιηθεί προηγουμένως).
Ποια είναι η βασική διαφορά μεταξύ του maven και του Gradle;
Το Gradle είναι η προηγμένη έκδοση της απόδοσης του maven, και μαζί με αυτό, μπορούμε να δημιουργήσουμε και εργασίες (όπως το χαρακτηριστικό που ήταν διαθέσιμο στο ANT), ώστε να μπορούμε να εξετάσουμε σε υψηλό επίπεδο:
Gradle = >> Maven + Ant
Ως μέρος του Selenium C #, χρησιμοποιούμε το Gallio ως εργαλείο κατασκευής.
Ποιο είναι το πλαίσιο Unit Test που χρησιμοποιούμε ως μέρος του πλαισίου αυτοματισμού Selenium;
Χρησιμοποιούμε κυρίως το TestNG / JUnit (το JUnit χρησιμοποιείται λιγότερο στις μέρες μας) ως μέρος του πλαισίου δοκιμής μονάδας, ενώ χτίζουμε το πλαίσιο Αυτοματισμού με το Σελήνιο.
Ως μέρος του πλαισίου Selenium C #, χρησιμοποιούμε το NUnit / MbUnit ως πλαίσιο δοκιμής μονάδας.
Ποια προσέγγιση μπορεί να ληφθεί υπόψη κατά τον σχεδιασμό των εργαλείων αναφοράς ως μέρος του πλαισίου Selenium;
Υπάρχει μια διαφορετική προσέγγιση αναφοράς που θα μπορούσαμε να ακολουθήσουμε κατά το σχεδιασμό του πλαισίου:
Εκτός από αυτήν την ενσωμάτωση εργαλείων αναφοράς ανοιχτού κώδικα, μπορούμε επίσης να επιλέξουμε ορισμένες προηγμένες δυνατότητες αναφοράς ή πίνακα εργαλείων για δημιουργία με τις παρακάτω τεχνολογίες και εργαλεία:
Πώς χρησιμοποιείτε το ELK για να δημιουργήσετε τον πίνακα ελέγχου αναφοράς με το Selenium Framework:
Υπάρχει μια βασική αρχή σχεδιασμού βάσης που χρησιμοποιείται για το σχεδιασμό του ταμπλό Αυτοματισμού, οι οποίες είναι:
Πώς δημιουργείτε μια προσαρμοσμένη αναφορά HTML;
Μπορείτε να χρησιμοποιήσετε διαφορετικές διεπαφές ακροατών και δημοσιογράφων που παρέχονται από το TestNg για να καταγράψετε τα συμβάντα και τα αντίστοιχα σύνολα δεδομένων τους και να δημιουργήσετε HTML χρησιμοποιώντας αυτά τα σύνολα δεδομένων και τις ετικέτες HTML στα εργαλεία αναφοράς.
Ποιες είναι οι προκλήσεις που αντιμετωπίσατε κατά την ανάπτυξη ενός πλαισίου;
Υπάρχουν διαφορετικές προκλήσεις που μπορείτε να αναφέρετε σύμφωνα με την εμπειρία σας κατά την ανάπτυξη του πλαισίου, για παράδειγμα:
Αναφέρετε ποια στοιχεία Selenium έχετε χρησιμοποιήσει στο Selenium Framework;
Μπορείτε να αναφέρετε ανάλογα με το πλαίσιο σας.
Ποια είναι η ροή του πλαισίου αυτοματισμού σας;
Μπορείτε να αναφέρετε τη ροή εκτέλεσης του πλαισίου σας ανάλογα με τη ροή του πλαισίου και τα εργαλεία που έχετε χρησιμοποιήσει. Παρακάτω είναι ένα παράδειγμα που μπορείτε να αναφέρετε:
CI (Jenkins) → Εργαλεία κατασκευής (Maven /Gradle) → Μονάδα δοκιμής πλαισίου (TestNg) → TestNg.xml - >> TestClasses → BaseTest (Κάθε δοκιμαστική κλάση επεκτείνει τη βασική κλάση ως baseTest όπου εξέρχεται το @beforeClass / @ BeforeSuite @afterClass κ.λπ.) -> TestM Methods → PageClasses → Μέθοδοι σελίδας → WebUtilities ( επαναχρησιμοποιήσιμη κλάση για τα βοηθητικά προγράμματα WebAction) - >> Αναφορά βοηθητικών προγραμμάτων
Τι καταλαβαίνετε από το πλαίσιο βάσει δεδομένων και πού χρησιμοποιούμε ένα πλαίσιο βάσει δεδομένων;
Ένα πλαίσιο βάσει δεδομένων είναι βασικά ένα πλαίσιο που καθοδηγείται από τα δεδομένα. Τούτου λεχθέντος, στην οποία η εφαρμογή ή ο τύπος της εφαρμογής όπου εκτελούνται πολλές περιπτώσεις ή σενάρια ίδιας δοκιμής με τα διαφορετικά σύνολα δεδομένων ή την πηγή ή τα δεδομένα είναι πολύ μεγάλη όπως στην περίπτωση που πρέπει να αλληλεπιδράσουμε μια ποικιλία Πηγές δεδομένων εκεί χρησιμοποιούμε το πλαίσιο βάσει δεδομένων.
Η διαφορετική πηγή δεδομένων μπορεί να είναι:
Πώς να εξηγήσετε το πλαίσιο αυτοματισμού σεληνίου σε μια συνέντευξη;
Υπάρχουν διαφορετικές προσεγγίσεις που μπορείτε να ακολουθήσετε για να εξηγήσετε το πλαίσιο αυτοματισμού σεληνίου σε μια συνέντευξη. η καλύτερη δυνατή προσέγγιση θα μπορούσε να είναι η αρθρωτή προσέγγιση, η οποία είναι η κατανομή της εξήγησης σε διαφορετικές ξεχωριστές ενότητες, όπως:
Ας συζητήσουμε λεπτομερώς:
Τύπος του Framework και Key και μοναδικά χαρακτηριστικά του Framework:
Πρέπει να αναφέρετε τον τύπο του πλαισίου, όπως το υβριδικό πλαίσιο, το πλαίσιο του αντικειμένου σελίδας, το υβριδικό πλαίσιο του αντικειμένου σελίδας κ.λπ.
Πρέπει να αναφέρετε τα μοναδικά χαρακτηριστικά του πλαισίου, όπως για παράδειγμα:
Εργαλεία και τεχνολογίες που χρησιμοποιούνται στο πλαίσιο Selenium:
Μπορείτε να αναφέρετε τα εργαλεία και τις τεχνολογίες που χρησιμοποιούνται κατά την ανάπτυξη του πλαισίου, όπως:
Η ροή της εκτέλεσης του Selenium Framework:
Μπορείτε να αναφέρετε τη ροή της εκτέλεσης του πλαισίου, δηλαδή, πώς ενεργοποιείτε τις δοκιμαστικές σουίτες και πώς ρέει στις δοκιμαστικές περιπτώσεις / μεθόδους και μέχρι το Utility Framework όπως webutils, εργαλεία δεδομένων κ.λπ. Μπορείτε να ανατρέξετε στην παραπάνω ερώτηση όπου συζητήσαμε πώς να εξηγήσουμε τη ροή της εκτέλεσης του πλαισίου Selenium.
Διαφορετικά κρίσιμα σενάρια που χειρίζονται το πλαίσιο σας:
Σε αυτήν την ενότητα, μπορείτε να συζητήσετε τα κρίσιμα χαρακτηριστικά που έχουν αυτοματοποιηθεί ως μέρος του αυτοματισμού της εφαρμογής σας με το πλαίσιο σας. Υπάρχουν πολλές περιπτώσεις ή λειτουργίες που μπορείτε να αναφέρετε εδώ, όπως:
Πώς να σχεδιάσετε σενάρια καταγραφής στο πλαίσιο Selenium;
Μπορείτε να χρησιμοποιήσετε το log4j για καταγραφή ή μπορείτε να χρησιμοποιήσετε υλοποίηση ταμπλό καταγραφής και εντοπισμού σφαλμάτων σε πραγματικό χρόνο με το Graylog, το οποίο βασικά χρησιμοποιεί το ElasticSearch στο backend για λεπτομέρειες καταγραφής και εντοπισμού σφαλμάτων σε πραγματικό χρόνο.
Ποια είναι τα σχέδια σχεδίασης που έχετε χρησιμοποιήσει κατά το σχεδιασμό του πλαισίου;
Μπορείτε να χρησιμοποιήσετε διαφορετικά μοτίβα σχεδίασης σύμφωνα με την ανάγκη και το σχεδιασμό του πλαισίου αυτοματισμού, όπως:
Κρίσιμες ερωτήσεις συνέντευξης σεληνίου:
Πόσοι τρόποι μπορείτε να εκτελέσετε το σενάριο αυτοματοποίησης παράλληλα;
Υπάρχουν πολλοί τρόποι και προσεγγίσεις μέσω των οποίων μπορείτε να εκτελέσετε τα δοκιμαστικά σενάρια σας παράλληλα, όπως:
Maven:
Χρήση του plugin surefire:
5
αληθής
Εδώ το πλήθος πιρούνι αντιπροσωπεύει τον αριθμό των παράλληλων νημάτων.
Γκρέιντ:
tasks.withType(Test) {
maxParallelForks = Runtime.runtime.availableProcessors()
}
Ποια είναι η διαφορά μεταξύ των μεθόδων setSpeed () και sleep ();
Η μέθοδος setSpeed () στο Selenium καθορίζει βασικά την ταχύτητα εκτέλεσης κάθε ενέργειας / εντολής.
Ας πούμε λοιπόν αν ορίσετε τοSpeed ("2000"), τότε κάθε γραμμή εκτέλεσης θα καθυστερήσει κατά 2000 χιλιοστά του δευτερολέπτου.
Από την άλλη πλευρά, το Thread.sleep () θα παρουσιάσει καθυστέρηση 3000 χιλιοστών του δευτερολέπτου (θα αναστείλει το νήμα για τη συγκεκριμένη λειτουργία).
Ως εκ τούτου, ο ύπνος () εφαρμόζεται σε 1 λειτουργία. από την άλλη πλευρά, το setSpeed () εισάγει την καθυστέρηση για κάθε λειτουργία και καθορίζοντας έτσι την ταχύτητα της εκτέλεσης.
Πώς να επαληθεύσετε την παρουσία ScrollBar με το Selenium;
Για να επαληθεύσουμε την οριζόντια γραμμή κύλισης στην ιστοσελίδα με το Selenium, χρησιμοποιούμε το Javascriptexecutor με τον ακόλουθο τρόπο:
JavascriptExecutor javascriptExecutor = (JavascriptExecutor) driver;
Boolean presenceOfHorizontalScroll = (Boolean) javascriptExecutor.executeScript("return document.documentElement.scrollWidth>document.documentElement.clientWidth;");
Για να επαληθεύσετε την κάθετη γραμμή κύλισης στην Ιστοσελίδα χρησιμοποιώντας Selenium webdriver πρέπει επίσης να χρησιμοποιήσουμε Javascriptexecutor :
JavascriptExecutor javascriptExecutor = (JavascriptExecutor) driver;
Boolean presenceOfVerticalScroll = (Boolean) javascriptExecutor.executeScript("return document.documentElement.scrollHeight>document.documentElement.clientHeight;");
Γράψτε τον κωδικό για να χειριστείτε τυχόν κρυμμένα στοιχεία Web στο πρόγραμμα οδήγησης σεληνίου;
WebElement element=driver.findElement(By.id("id_of_Element"));
JavascriptExecutor jsExecutor = (JavascriptExecutor)driver;
jsExecutor.executeScript("arguments[0].click();", element);
Αναφέρετε διαφορετικές προσεγγίσεις για να χειριστείτε ένα αναδυόμενο παράθυρο που βασίζεται σε παράθυρο χρησιμοποιώντας το Selenium webdriver;
Μπορείτε να χρησιμοποιήσετε τις παρακάτω προσεγγίσεις για να χειριστείτε την εφαρμογή που βασίζεται σε παράθυρο, όπως το παράθυρο Pop up:
Τι είναι η μητρική διεπαφή του WebDriver;
SearchContext
Αναφέρετε τις βασικές διαφορές μεταξύ των βάζων POI και JXL;
Το POI υποστηρίζει μορφοποίηση υπό όρους, μορφοποίηση εμπλουτισμένου κειμένου ή μορφή xlsx, αλλά από την άλλη πλευρά, το JXL δεν υποστηρίζει καμία από αυτές τις δυνατότητες.
Η βιβλιοθήκη POI διατηρείται και ενημερώνεται σε σύγκριση με το JXL.
Πώς χειρίζεστε τις καθυστερήσεις δικτύου χρησιμοποιώντας το Selenium;
Μπορούμε να χρησιμοποιήσουμε τα ακόλουθα για να χειριστούμε την καθυστέρηση δικτύου χρησιμοποιώντας στο Selenium:
Driver.manage.pageloadingtime
Ποιες είναι οι προσεγγίσεις που θα ακολουθήσετε για να χειριστείτε τη δοκιμή περιεχομένου Ajax με το Selenium WebDriver;
Το AJAX είναι βασικά ασύγχρονο JavaScript και XML. Όλη η επικοινωνία της εφαρμογής που βασίζεται στο AJAX βασίζεται σε ασύγχρονες κλήσεις,
που επιτρέπουν την εκτέλεση κάθε εκδήλωσης χωρίς ανανέωση της ιστοσελίδας. Κάθε λειτουργία μπορεί να πραγματοποιηθεί ανεξάρτητα από άλλες εκδηλώσεις.
Ποιες είναι οι προκλήσεις κατά την εργασία με το AJAX Selenium WebDriver?
Για να εργαστείτε με την εφαρμογή AJAX, ίσως χρειαστεί να χρησιμοποιήσετε αναμονή για τις παραπάνω περιπτώσεις χρήσης:
Ποια είναι η προσέγγιση για συνεργασία με το Proxy στο Selenium Webdriver;
Υπάρχουν δύο διαφορετικές προσεγγίσεις που μπορείτε να χειριστείτε διακομιστή μεσολάβησης στο Selenium Webdriver:
Proxy proxy=new Proxy();
proxy.setHttpProxy("localhost:8889");
DesiredCapabilities capabilities=new DesiredCapabilities();
capabilities.setCapability(CapabilityType.PROXY, proxy);
WebDriver driver=new FirefoxDriver(capabilities);
Αναφέρετε τους τρόπους επίτευξης συγχρονισμού στο WebDriver;
Μπορούμε να χειριστούμε τον συγχρονισμό στο πρόγραμμα οδήγησης Selenium web χρησιμοποιώντας διαφορετικό μηχανισμό αναμονής:
Αναφέρετε τις βασικές διαφορές μεταξύ TestNg @BeforeTest και @BeforeMethod;
Στο TestNg @BeforeTest και @BeoreMethod έχει διαφορετικές πτυχές, είναι:
Αναφέρετε τους διαφορετικούς τύπους API WebDriver που υπάρχουν στο Selenium;
Πόσοι τρόποι μπορείτε να επιτύχετε χωρίς κεφαλή εκτέλεση με το Selenium;
Μπορούμε να χρησιμοποιήσουμε τα παρακάτω προγράμματα οδήγησης για να επιτύχουμε αυτοματισμούς με το Selenium:
Τι είναι το Fluent Wait In Selenium WebDriver;
Με το FluentWait, μπορείτε να ορίσετε ένα μέγιστο χρονικό διάστημα (ας πούμε 3 λεπτά) για να περιμένετε για να ικανοποιήσετε μια συγκεκριμένη κατάσταση και κατά τη διάρκεια αυτής της περιόδου, θα πραγματοποιείτε συνεχώς δημοσκόπηση ή έλεγχο με μια συγκεκριμένη συχνότητα (πολύ μικρή μονάδα χρόνου, ας πούμε 3 secs) για έλεγχο.
Εάν πληρούται η συνθήκη, τότε θα επιστρέψει αληθινή και, εάν όχι, θα εξαιρέσει μια εξαίρεση "ElementNotVisibleException".
Η σύνταξη του fluentwait στο Σελήνιο είναι:
Wait fluentWait = new FluentWait(driver).withTimeout(100, TimeUnit.SECONDS)
.pollingevery(2, TimeUnit.SECONDS)
.ignoring(ElementNotVisibleException.class);
Πείτε μας μερικές εξαιρέσεις σεληνίου που αντιμετωπίσατε κατά τη συνεργασία με το `Selenium WebDriver;
Πώς διαγράφετε τα cookies στο Selenium;
Η εντολή για τη διαγραφή των cookies στο Selenium είναι:
driver.manage().deleteAllCookies();
Εξηγήστε την προσέγγιση ότι πώς διαβάζετε τη μεταβλητή javascript στο σελήνιο webdriver;
Πρέπει να χρησιμοποιήσουμε το JavascriptExecutor για να μπορέσουμε να το κάνουμε.
JavascriptExecutor jsExecutor = (JavascriptExecutor) webdriver;
String jsVariable = (String.valueOf(jsExecutor.executeScript("return document.title")));
Πώς να εκτελέσετε τη λειτουργία Zoom In και Zoom Out Browser στο Σελήνιο;
Μπορούμε να πραγματοποιήσουμε λειτουργία μεγέθυνσης και σμίκρυνσης στο Σελήνιο χρησιμοποιώντας δύο διαφορετικές προσεγγίσεις, όπως:
Κάντε μεγέθυνση χρησιμοποιώντας την τάξη ρομπότ στο σελήνιο
Robot robotInstance = new Robot();
//Zoom in
robotInstance.keyPress(KeyEvent.VK_CONTROL);
robotInstance.keyPress(KeyEvent.VK_ADD);
robotInstance.keyRelease(KeyEvent.VK_ADD);
robotInstance.keyRelease(KeyEvent.VK_CONTROL);
Σμίκρυνση χρησιμοποιώντας την τάξη ρομπότ στο σελήνιο
Robot robotInstance = new Robot();
robotInstance.keyPress(KeyEvent.VK_CONTROL);
robotInstance.keyPress(KeyEvent.VK_SUBTRACT);
robotInstance.keyRelease(KeyEvent.VK_SUBTRACT);
robotInstance.keyRelease(KeyEvent.VK_CONTROL);
Κάντε μεγέθυνση χρησιμοποιώντας την τάξη Keys στο σελήνιο
driver.findElement(By.tagName("html")).sendKeys(Keys.chord(Keys.CONTROL,Keys.ADD));
Σμίκρυνση χρησιμοποιώντας την τάξη ρομπότ στο σελήνιο
driver.findElement(By.tagName("html")).sendKeys(Keys.chord(Keys.CONTROL,Keys.SUBTRACT));
Πώς να καθαρίσετε ένα πεδίο στο σελήνιο χωρίς να χρησιμοποιήσετε μια διαυγή () μέθοδο;
Μπορούμε να διαγράψουμε οποιοδήποτε πεδίο χωρίς να χρησιμοποιήσουμε τη μέθοδο διαγραφής () στην παρακάτω προσέγγιση:
Μπορούμε να χρησιμοποιήσουμε την κατηγορία Keys στο Σελήνιο για να πετύχουμε το ίδιο:
WebElement element = driver.findElement(By.id("id_of_Element"));
element.sendKeys(Keys.chord(Keys.CONTROL, "a"));
element.sendKeys(Keys.DELETE);
Πώς να εκτελέσετε ξανά τις αποτυχημένες δοκιμαστικές περιπτώσεις στο σελήνιο;
Μπορούμε να εκτελέσουμε ξανά τις αποτυχημένες δοκιμαστικές περιπτώσεις στο Σελήνιο με τις παρακάτω δύο προσεγγίσεις:
Με το TestNG-fail.xml που δημιουργήθηκε αυτόματα:
Μετά την εκτέλεση της δοκιμής (εκτελέστηκε από το testng.xml), το TestNG δημιουργεί αυτόματα TestNG-fail.xml. Μπορείτε να εκτελέσετε ξανά το ίδιο XML για να εκτελέσετε ΜΟΝΟ τις αποτυχημένες δοκιμές.
Με την εφαρμογή Διεπαφή IRetryAnalyzer από testNg :
Με την εφαρμογή της διεπαφής IRetryAnalyzer μπορούμε να εκτελέσουμε αυτόματα τις αποτυχημένες περιπτώσεις δοκιμής με το TestNg:
If you implement the IRetryAnalyzer you can auto rerun failed test with TestNg :
public class Retry implements IRetryAnalyzer {
int counter = 1;
int retryMaxLimit = 3;
public boolean retry(ITestResult result) {
if (counter < retryMaxLimit) {
counter++;
return true;
}
return false;
}
}
Πώς να επισημάνετε το στοιχείο στο Selenium WebDriver;
Μπορούμε να χρησιμοποιήσουμε το JavascriptExecutor για να ορίσουμε το χρώμα του Webelement αναφέροντας το στοιχείο.
WebElement element = driver.findElement(By.xpath("id_of_the_element"));
JavascriptExecutor jsExecutor = (JavascriptExecutor) driver;
jsExecutor.executeScript("arguments[0].setAttribute('style', 'background: red; border: 2px solid red;');", element);
Πώς να κάνετε διπλό κλικ στο σελήνιο;
Μπορούμε να χρησιμοποιήσουμε το Μάθημα δράσεων στο Σελήνιο για να εκτελέσετε τις λειτουργίες DoubleClick με τον παρακάτω τρόπο. Η παρακάτω μέθοδος παίρνει ένα όρισμα στο οποίο πρέπει να εκτελέσετε το DoubleClick.
public void doubleClick(By locator) {
try {
WebElement element = driver.findElement(locator);
Actions actions = new Actions(driver).doubleClick(element);
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());
}
}
Πώς να κάνετε κύλιση στο σελήνιο;
Πρέπει να χρησιμοποιήσουμε το Javascript για να πραγματοποιήσουμε την κύλιση και η παρακάτω μέθοδος παρέχει μια προηγμένη προσέγγιση για κύλιση σε στοιχείο έως ότου το στοιχείο είναι ορατό, το οποίο μετακινείται σε προβολή:
public void scrollIntoView(By locator) {
try {
JavascriptExecutor executor = (JavascriptExecutor) driver;
WebElement element = driver.findElement(locator);
executor.executeScript("arguments[0].scrollIntoView(true);", element);
BASE_LOGGER
.info("scrollIntoView operation has been performed for the locator : " + String.valueOf(element));
} catch (Exception e) {
String exceptionData = e.getCause().getMessage();
BASE_LOGGER.error("Error encountered i.e : " + exceptionData
+ " while performing scrollIntoView on the element : " + locator);
}
}
Πώς να λάβετε όλους τους συνδέσμους στη σελίδα στο σελήνιο;
Μπορούμε να χρησιμοποιήσουμε το By.tagName ("a") για τη λήψη όλων των συνδέσμων που είναι διαθέσιμοι στη σελίδα, καθώς ο σύνδεσμος αναφέρεται στην ετικέτα που ονομάζεται ως; η μέθοδος ακολουθεί τον ακόλουθο τρόπο:
public List<WebElement> getAllLinks() {
try {
List<WebElement> allLinks = driver.findElements(By.tagName("a"));
int numberOfLinks = allLinks.size();
BASE_LOGGER.info("Number of Links in the Current Page is : " + numberOfLinks);
BASE_LOGGER.info("GetAllLinks operation has been performed for the Current Page : ");
return allLinks;
} catch (Exception e) {
String exceptionData = e.getCause().getMessage();
BASE_LOGGER.error("Error encountered i.e : " + exceptionData
+ " while performing GetAllLinks for the Current Page :");
return null;
}
}
Πώς να βρείτε τον αριθμό των iframes σε μια σελίδα στο Selenium;
Μπορούμε να χρησιμοποιήσουμε την παρακάτω μέθοδο για να βρούμε τον αριθμό των iframe σε μια σελίδα στο Selenium:
public int numberOfIframesInPage() {
try {
JavascriptExecutor exe = (JavascriptExecutor) driver;
Integer numberOfIFrames = Integer.parseInt(exe.executeScript("return window.length").toString());
BASE_LOGGER.info("Number of IFrames in the current Window are : " + numberOfIFrames);
return numberOfIFrames;
} catch (Exception e) {
BASE_LOGGER
.error("Exception occurred in Finding numberOfIframesInPage with : " + e.getCause().getMessage());
return 0;
}
}
Πώς να μεταβείτε στο προεπιλεγμένο πλαίσιο στο πρόγραμμα οδήγησης σεληνίου;
Μπορούμε να χρησιμοποιήσουμε τη μέθοδο switchTo (). DefaultContent () για μετάβαση στο προεπιλεγμένο πλαίσιο στο Selenium Webdriver:
public void switchToDefaultFrame() {
try {
driver.switchTo().defaultContent();
BASE_LOGGER.info("Switched to Default Content ");
} catch (Exception e) {
BASE_LOGGER.error("Exception Occurred while switching to default Content ");
}
}
Πώς να χειριστείτε τις καρτέλες στο σελήνιο;
Μπορούμε να χρησιμοποιήσουμε μια λίστα για να αποθηκεύσουμε όλες τις διαθέσιμες καρτέλες και να χρησιμοποιήσουμε το driver.getWindowHandles () για να αποθηκεύσουμε τις καρτέλες και μία φορά μετά από αυτό, μπορούμε να χειριστούμε τις καρτέλες μία προς μία στην παρακάτω προσέγγιση, όπως:
public void switchToTab(int indexOfTab) {
try {
ArrayList<String> tabs = new ArrayList<String>(driver.getWindowHandles());
driver.switchTo().window(tabs.get(indexOfTab));
BASE_LOGGER.info("Successfully switched to tab with tab index as : " + indexOfTab);
} catch (Exception e) {
String exceptionData = e.getCause().getMessage();
BASE_LOGGER.error(
"Unable to Switch to Tab for :" + indexOfTab + " i.e failed with exception as : " + exceptionData);
}
}
Ερωτήσεις συνέντευξης για ενδιάμεσο σελήνιο
Είναι το WebDriver μια τάξη ή μια διεπαφή;
Το Webdriver είναι μια διεπαφή όπου όλες οι κλάσεις προγραμμάτων οδήγησης όπως το ChromeDriver, το FirefoxDriver δημιουργούν ένα αντικείμενο και έχουν αναφορά στην αναφορά της διεπαφής Webdriver.
Ποιο είναι πιο γρήγορο, XPath ή CSS;
Το CSS είναι ταχύτερο από το XPath.
Γιατί το CSS είναι πιο γρήγορο από το XPath;
Κάθε μηχανή προγράμματος περιήγησης είναι διαφορετική, και ως εκ τούτου η στρατηγική ανάλυσης και η εφαρμογή του κινητήρα είναι διαφορετικές μέσω του γραπτού XPath. Αυτός είναι ο λόγος για τον οποίο η ανάλυση του XPath γίνεται ασυνεπής κατά καιρούς. Για παράδειγμα, το IE δεν έχει τη δική του εφαρμογή κινητήρα για την ανάλυση του XPATH. Ως εκ τούτου, το Selenium εγχέει τον δικό του μηχάνημα XPath για να αναλύσει το XPATH στο IE.
Τι είναι τα αυξημένα προνομιακά προγράμματα περιήγησης;
Όταν τα προγράμματα περιήγησης ανοίγουν με ορισμένες προκαθορισμένες ρυθμίσεις (π.χ. με ειδική προνομιακή λειτουργία), όπως με συγκεκριμένα προφίλ ή πιστοποιητικά, τότε ονομάζεται αυξημένες συνεδρίες προνομιακών προγραμμάτων περιήγησης.
Μπορούμε να εκκινήστε ένα πρόγραμμα περιήγησης με Selenium με προφίλ ή ορίστε πιστοποιητικά για τους ίδιους σκοπούς.
Τι είναι το Selenium χωρίς πρόγραμμα περιήγησης και πώς εκτελούμε δοκιμές προγράμματος περιήγησης χωρίς κεφαλή;
Ένα πρόγραμμα περιήγησης χωρίς κεφαλή είναι ένα πρόγραμμα προσομοίωσης για το πρόγραμμα περιήγησης όπου δεν διαθέτουμε διεπαφή χρήστη, αλλά εξακολουθούμε να μπορούμε να εκτελέσουμε την εφαρμογή υπό δοκιμή σε αόρατη λειτουργία
και εκτελέστε την επιθυμητή λειτουργία ιστού στο παρασκήνιο.
Χρησιμοποιούμε προγράμματα οδήγησης προγράμματος περιήγησης HeadLess όπως πρόγραμμα οδήγησης HTMLUNIT ή πρόγραμμα οδήγησης phantomJS για εκτέλεση δοκιμών προγράμματος περιήγησης χωρίς κεφαλή.
Σελήνιο εναντίον μαριονέτα;
Υπάρχουν πολλές διαφορές μεταξύ Selenium και puppeteer (το οποίο είναι ένα νέο εργαλείο σε σύγκριση με το Selenium και αναπτύχθηκε από το Google Chrome DEV)
Θα συζητήσουμε εδώ τη σύγκριση μεταξύ Selenium VS Puppeteer σε διάφορες πτυχές:
HardAssert εναντίον SoftAssert;
Και οι δύο προσεγγίσεις ισχυρισμού προέρχονται από το TestNg και καθεμία από αυτές έχει τα αντίστοιχα πλεονεκτήματα και μειονεκτήματα
Όταν βρίσκεστε υπό τις συνθήκες όπου πρέπει να έχετε μια δήλωση που είναι προφανής, δηλαδή, χωρίς αυτό το βήμα, τα υπόλοιπα βήματα του σεναρίου δεν έχουν νόημα να εκτελεστούν, τότε μπορείτε να βάλετε το Hard Assert εκεί.
Πώς να ρυθμίσετε το μέγεθος του παραθύρου στο σελήνιο;
Μπορούμε να δημιουργήσουμε ένα αντικείμενο κλάσης ιδιότητας και να περάσουμε αυτό το αντικείμενο στη μέθοδο setSize ():
Dimension dimension = new Dimension(480,700);
driver.manage().window().setSize(dimension);
Ποιο είναι το σύστημα ελέγχου έκδοσης που χρησιμοποιείτε ενώ εργάζεστε με το Selenium;
Μπορείτε να αναφέρετε ό, τι VCS χρησιμοποιείτε, όπως Github, SVN κ.λπ.
Πώς να κλωνοποιήσετε ένα git repo;
Μπορούμε να κλωνοποιήσουμε το git repo χρησιμοποιώντας:
Git clone repo
Πώς να τραβήξετε τον κωδικό repo Git;
Git pull remoteRepoURL branchName
Πώς να σπρώξετε τον κώδικα στο git repo;
Git push remoteURL branchName
Πώς να ρυθμίσετε το τηλεχειριστήριο;
git remote add ProvideARemoteName remoetURL
Πώς να επαληθεύσετε τα διαθέσιμα τηλεχειριστήρια;
Git remote -v
Πώς να ελέγξετε σε ποια απομακρυσμένη διεύθυνση URL βρίσκεστε αυτήν τη στιγμή;
git config --get remote.origin.url
Πώς μπορείτε να ενσωματώσετε το πλαίσιο σας με τη Jenkins;
Ως μέρος του πλαισίου αυτοματισμού Selenium, χρησιμοποιούμε εργαλεία κατασκευής (όπως το Maven / Gradle) και μπορούμε να δημιουργήσουμε ένα Job Jenkins και να συνδέσουμε το Maven / Gradle παρέχοντας τη διαμόρφωση με VCS (δηλαδή, Github κ.λπ.)
Ποια είναι τα μειονεκτήματα του Sikuli;
Πώς να εκτελέσετε δοκιμές βάσης δεδομένων χρησιμοποιώντας σελήνιο;
Μπορούμε να πραγματοποιήσουμε δοκιμές βάσεων δεδομένων χρησιμοποιώντας σελήνιο στην παρακάτω αρθρωτή προσέγγιση:
Ακολουθεί το παρακάτω απόσπασμα κώδικα για τα παραπάνω βήματα:
Ρύθμιση σύνδεσης Selenium Database με JAVA JDBC και δημιουργεί μια δήλωση DB:
static Connection connection = null;
private static Statement statement;
public static String DataBase_URL = "DB_URL";
public static String DataBase_USER = "DB_UserName";
public static String DataBase_PASSWORD = "DB_password";
/* This method Creates the connection with Java JDBC and return it to the Test method to use along with statement
*/
@BeforeTest
public void setUp() throws Exception {
try{
String dbClass = "com.mysql.cj.jdbc.Driver";
Class.forName(dbClass).newInstance();
Connection con = DriverManager.getConnection(DataBase_URL, DataBase_USER, DataBase_PASSWORD);
statement = con.createStatement();
}
catch (Exception e)
{
e.getCause().getMessage().toString();
}
}
Χρησιμοποιήστε τη δήλωση για να ζητήσετε το DB με SQL:
@Test
public void test() {
try{
String queryData = "select * from TableName";
ResultSet res = statement.executeQuery(queryData);
while (res.next())
{
System.out.print(res.getString(1));
System.out.print(" " + res.getString(2));
}
}
catch(Exception e)
{
e.getMessage();
}
}
Κλείσιμο της σύνδεσης δεδομένων:
Αυτό το βήμα είναι πολύ σημαντικό. Διαφορετικά, ενδέχεται να καταλήξουμε στη δημιουργία πολλαπλών συνδέσεων βάσης δεδομένων χωρίς να τις κλείσουμε μετά τη χρήση, κάτι που μπορεί να προκαλέσει πολλά προβλήματα.
Ακολουθεί το απόσπασμα κώδικα για το ίδιο:
@AfterTest
public void tearDown() throws Exception {
if (connection != null) {
connection.close();
}
}
Πώς να επαληθεύσετε το χρώμα φόντου και το χρώμα ενός WebElement χρησιμοποιώντας το Selenium;
Πρέπει να χρησιμοποιήσουμε μια μέθοδο που ονομάζεται getCssValue ("χρώμα") για την ανάκτηση του χρώματος ενός διαδικτυακού στοιχείου και getCssValue ("χρώμα φόντου") για να τραβήξετε το χρώμα φόντου ενός διαδικτυακού στοιχείου.
Εδώ είναι το απόσπασμα κώδικα:
String colour = driver.findElement(By.xpath("XPATH_of_the_Element")).getCssValue("color");
String backgroundColour = driver.findElement(By.xpath("XPATH_of_the_Element")).getCssValue("background-color");
Πώς να επαληθεύσετε το μέγεθος γραμματοσειράς ενός WebElement χρησιμοποιώντας το πρόγραμμα οδήγησης Selenium webdriver;
Μπορούμε να χρησιμοποιήσουμε τη μέθοδο που ονομάζεται getCssValue ("font-size")
String fontSize = driver.findElement(By.xpath("XPATH_of_the_Element")).getCssValue("font-size");
Πώς να επαληθεύσετε τον τύπο γραμματοσειράς ενός webelement στο Selenium Webdriver;
String fontSize = driver.findElement(By.xpath("XPATH_of_the_Element")).getCssValue("font-type");
Πώς να λάβετε κείμενο συμβουλών εργαλείων στο σελήνιο;
Η λήψη κειμένου επεξήγησης εργαλείου ενός WebElement δεν είναι παρά η λήψη του χαρακτηριστικού τίτλου του Webelement με τον ακόλουθο τρόπο:
public String getToolTipData(By locator){
WebElement element=driver.findElement(locator);
return element.getAttribute("title");
}
Τι είναι το StaleElementException;
Stale Element σημαίνει ότι όταν ένα στοιχείο Web δεν είναι πλέον συνδεδεμένο με το DOM / WebPage που υπήρχε προηγουμένως. Σε αυτήν την περίπτωση, το Σελήνιο ρίχνει μια παλιή εξαίρεση.
Αυτό μπορεί να συμβεί για πολλούς πολλαπλούς λόγους, όπως λόγω κλήσεων AJAX ή JavaScript που αλλάζουν την κατάσταση
του στοιχείου το καθιστά μη διαθέσιμο / αποσπασμένο από το DOM.
Συμπέρασμα : Με αυτά έχουμε τελειώσει με τις ερωτήσεις συνέντευξης των Σετ Κρίσιμου Σεληνίου που καλύπτουν ερωτήσεις συνέντευξης του Σελήνιο Πλαίσιο, Διαβάστε εδώ για να πάρετε σε βάθος έννοιες του Σεληνίου να κατανοήσουμε την αρχιτεκτονική του Σεληνίου.