71+ ερωτήσεις συνέντευξης χωρίς απαντήσεις σε κρίσιμα σελήνια

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

Ερωτήσεις συνέντευξης πλαισίου Selenium

Προηγούμενες ερωτήσεις συνέντευξης σεληνίου

Ερωτήσεις συνέντευξης για ενδιάμεσο σελήνιο

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

Αρχικά θα ξεκινήσουμε με ερωτήσεις και απαντήσεις συνέντευξης στο Advance Selenium Framework και στη συνέχεια θα προχωρήσουμε μπροστά σε ερωτήσεις και απαντήσεις συνέντευξης σε κρίσιμα / Advanced Selenium και στη συνέχεια θα ολοκληρώσουμε αυτό το σεμινάριο με ενδιάμεσα επίπεδα ώστε να μπορείτε να προετοιμαστείτε καλά.

Ερωτήσεις συνέντευξης σεληνίου
Ερωτήσεις συνέντευξης σεληνίου

Ερωτήσεις συνέντευξης πλαισίου Selenium

Προηγούμενες ερωτήσεις συνέντευξης Selenium

Ερωτήσεις συνέντευξης για ενδιάμεσο σελήνιο

Ερωτήσεις συνέντευξης πλαισίου Selenium: 

Πόσα δημοφιλή είδη πλαισίου σεληνίου υπάρχουν;

Υπάρχουν τέσσερις διαφορετικοί τύποι πλαισίων σεληνίου, που είναι: 

  • Πλαίσιο μοντέλου αντικειμένου σελίδας 
  • Πλαίσιο υβριδικού αντικειμένου σελίδας 
  • Πλαίσιο βάσει δεδομένων 
  • Πλαίσιο βάσει λέξεων-κλειδιών 
  • Πλαίσιο BDD 

Πόσες διαφορετικές προσεγγίσεις υπάρχουν για το σχεδιασμό του πλαισίου μοντέλου αντικειμένου σελίδας;

  • Κλασικό μοντέλο αντικειμένου σελίδας με εργοστάσιο σελίδας  
  • Προσαρμοσμένο μοντέλο αντικειμένου σελίδας χωρίς εργοστάσιο σελίδας 

Τι είναι το Page factory στο σελήνιο;

Το PageFactory είναι μια τάξη από τη βιβλιοθήκη Selenium από ένα πακέτο που ονομάζεται org.openqa.selenium.support που βοηθά στο σχεδιασμό του μοτίβου σχεδίασης αντικειμένου σελίδας στο πλαίσιο Page Object Model, το οποίο έχει λίγες υλοποιήσεις όπως:

  • Η μέθοδος initElements () βασικά είναι μια στατική μέθοδος στο Page Factory Class, μέσω όλων των στοιχείων εντοπισμού μπορούν να αρχικοποιηθούν.
  • Πρέπει να χρησιμοποιήσουμε τον σχολιασμό @findBy για να δηλώσουμε το Webelement με διαφορετικές στρατηγικές εντοπισμού (π.χ. XPath, όνομα, id, CSS κ.λπ.)
  • Η τάξη Page Factory έχει έναν κατασκευαστή ως δημόσιο PageFactory ()

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

  • ένα. Στο κλασικό μοντέλο αντικειμένου σελίδας, χρησιμοποιούμε το Εργοστάσιο σελίδας για να δημιουργήσουμε το μοντέλο αντικειμένου σελίδας διατηρώντας τους εντοπιστές όλων των σελίδων (WebElements) στην κλάση Pagefactory χρησιμοποιώντας @findBy μέθοδος σχολιασμού και initElements ().
  • Στο μοντέλο προσαρμοσμένου αντικειμένου σελίδας, σχεδιάζουμε τις διάφορες διεπαφές για να αποθηκεύουμε τους εντοπιστές για διαφορετικές σελίδες για τον Ιστό. και επίσης, σε αντίθεση με το μοντέλο αντικειμένου κλασικής σελίδας εδώ, έχουμε ξεχωριστές τάξεις για τον καθορισμό διαφορετικών μεθόδων για διαφορετικές λειτουργίες σελίδας και ισχυρισμούς για ξεχωριστές λειτουργίες ιστοσελίδας.

Έτσι, κάθε ιστοσελίδα πρέπει να έχει μια διεπαφή για την αποθήκευση εντοπιστών και 1 τάξη για τις λειτουργίες ιστού επιπέδου σελίδας και τους ισχυρισμούς σεβασμού τους

Ποια είναι η αρχή σχεδιασμού του Page Object Model Framework;

Η αρχή σχεδιασμού του πλαισίου μοντέλου αντικειμένου σελίδας βασίζεται σε αρχές ή έννοιες, οι οποίες είναι: 

  • Ολόκληρη η εφαρμογή Web διαιρείται σε διαφορετικές ιστοσελίδες και κάθε μία από τις ιστοσελίδες αντιπροσωπεύει μια ξεχωριστή κλάση java / c # (αντίστοιχες γλώσσες στις οποίες είναι ενσωματωμένο το πλαίσιο) που αντιπροσωπεύει τις λειτουργίες για τις αντίστοιχες ιστοσελίδες.

Έτσι, Όλες οι ενέργειες της σελίδας (διαφορετικές λειτουργίες της λειτουργικότητας της ιστοσελίδας) βρίσκονται στις αντίστοιχες τάξεις σελίδων.

  • Οι εντοπιστές της αντίστοιχης σελίδας διατηρούνται σε ξεχωριστές διεπαφές ή στις κατηγορίες εργοστασιακών σελίδων.

Αναφέρετε τις βασικές διαφορές μεταξύ του μοντέλου αντικειμένου σελίδας και του μοντέλου υβριδικού αντικειμένου σελίδας;

Η διαφορά μεταξύ του μοντέλου αντικειμένου σελίδας και του υβριδικού μοντέλου αντικειμένου σελίδας είναι ότι το υβριδικό μοντέλο αντικειμένου σελίδας βασίζεται στη σχεδίαση πλαισίου μοντέλου αντικειμένου σελίδας μαζί με τις εκτεταμένες δυνατότητες του πλαισίου βάσει δεδομένων και υποστηρίζει μια μεγάλη ποικιλία των βοηθητικών λειτουργιών δεδομένων όπως παρακάτω : 

  • Εργαλεία δεδομένων Excel
  • Εργαλεία δεδομένων ιδιοτήτων
  • Εργαλεία δεδομένων Yaml
  • Εργαλεία παροχής δεδομένων TestNg
  • Εργαλεία βάσης δεδομένων
  • Εργαλεία δεδομένων PDF
  • Εργαλεία δεδομένων εικόνας
  • Εργαλεία δεδομένων CSV

Ποια είναι η γλώσσα 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;

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

  • Αναφορά TestNg.
  • Αναφορά Xslt.
  • Έκθεση γοητείας.
  • έκθεση έκτασης

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

  • ELK stack, δηλαδή, Ελαστική αναζήτηση, Logstash και Kibana, το οποίο είναι πολύ, πολύ προηγμένο και ανθεκτικό στη φύση και είναι σε χρήση και ανάπτυξη πλαισίου Advanced Automation.
  • Προσαρμοσμένη αναφορά HTML.

Πώς χρησιμοποιείτε το ELK για να δημιουργήσετε τον πίνακα ελέγχου αναφοράς με το Selenium Framework:

Υπάρχει μια βασική αρχή σχεδιασμού βάσης που χρησιμοποιείται για το σχεδιασμό του ταμπλό Αυτοματισμού, οι οποίες είναι: 

  • Χρησιμοποιήστε το πρόγραμμα ακρόασης TestNg και ενσωματώστε το στα ευρετήρια ElasticSearch για τυχόν συμβάντα όπως περάστε, αποτύχετε, παραλείψετε κ.λπ. 
  • Δημιουργήστε διαφορετικά ευρετήρια (αποτυχία επιτυχίας και ποια είναι όλα τα χαρακτηριστικά που χρειάζεστε για αναφορά, όπως εξαιρέσεις και λεπτομέρειες τους κ.λπ.).
  • Χρησιμοποιήστε αυτά τα ευρετήρια για να εμφανίσετε τα δεδομένα στον πίνακα ελέγχου Kibana. 

Πώς δημιουργείτε μια προσαρμοσμένη αναφορά HTML;

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

Ποιες είναι οι προκλήσεις που αντιμετωπίσατε κατά την ανάπτυξη ενός πλαισίου;

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

  • Ποιο μοτίβο σχεδιασμού γλώσσας να διαλέξετε για να αρχίσετε να δημιουργείτε το σχέδιο του πλαισίου αυτοματισμού (π.χ., Factory Design Pattern, Singleton Design Pattern, Abstract Design Pattern, κ.λπ.)
  • Πώς να χειριστείτε διαφορετικούς τύπους παρουσιών WebDrivers (όπως το Local Driver, RemoteDriver, EventDriver) και αν θα διατηρήσετε τις παρουσίες προγράμματος οδήγησης ως στατικές ή όχι στατικές, κ.λπ. και ποιες είναι οι αντίστοιχες προσεγγίσεις τους.
  • Ενσωμάτωση με διαφορετικά εργαλεία τρίτων όπως επαλήθευση εικόνας, λειτουργίες Native App-based (π.χ. αναδυόμενο παράθυρο κ.λπ.), ενοποίηση εργαλείων TestCase Management όπως JIRA, TestLink κ.λπ. 
  • Προηγμένες δυνατότητες αναφοράς.
  • Τρόπος δημιουργίας βοηθητικών προγραμμάτων κρίσιμων λειτουργιών όπως (λίγα παραδείγματα, όπως Σμίκρυνση / Σμίκρυνση, επικύρωση κειμένου εικόνας, επικυρώσεις PDF ή χειρισμός διαφορετικών ζητημάτων με πιστοποιητικά, εκ των προτέρων υλοποιήσεις ακροατή TestNG, χειρισμός εξαιρέσεων εκ των προτέρων και αναφορές κ.λπ.) 

Αναφέρετε ποια στοιχεία Selenium έχετε χρησιμοποιήσει στο Selenium Framework;

  • Selenium WebDriver
  • Σελήνιο GRID 

Μπορείτε να αναφέρετε ανάλογα με το πλαίσιο σας.

Ποια είναι η ροή του πλαισίου αυτοματισμού σας;

Μπορείτε να αναφέρετε τη ροή εκτέλεσης του πλαισίου σας ανάλογα με τη ροή του πλαισίου και τα εργαλεία που έχετε χρησιμοποιήσει. Παρακάτω είναι ένα παράδειγμα που μπορείτε να αναφέρετε:

CI (Jenkins) → Εργαλεία κατασκευής (Maven /Gradle) → Μονάδα δοκιμής πλαισίου (TestNg) → TestNg.xml - >> TestClasses → BaseTest (Κάθε δοκιμαστική κλάση επεκτείνει τη βασική κλάση ως baseTest όπου εξέρχεται το @beforeClass / @ BeforeSuite @afterClass κ.λπ.) -> TestM Methods → PageClasses → Μέθοδοι σελίδας → WebUtilities ( επαναχρησιμοποιήσιμη κλάση για τα βοηθητικά προγράμματα WebAction) - >> Αναφορά βοηθητικών προγραμμάτων 

Τι καταλαβαίνετε από το πλαίσιο βάσει δεδομένων και πού χρησιμοποιούμε ένα πλαίσιο βάσει δεδομένων;

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

Η διαφορετική πηγή δεδομένων μπορεί να είναι: 

  • A. Εργαλεία δεδομένων Excel
  • B. Ιδιότητες Εργαλεία δεδομένων
  • Γ. Utl Data Utils
  • D. Εργαλεία παροχής δεδομένων TestNg
  • Ε. DataBase Utils
  • ΣΤ. Εργαλεία δεδομένων PDF
  • G. Εργαλεία δεδομένων εικόνας
  • H. CSV Data Utils

Πώς να εξηγήσετε το πλαίσιο αυτοματισμού σεληνίου σε μια συνέντευξη;

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

  • Τύπος του Framework και Key και μοναδικά χαρακτηριστικά του Framework.
  • Εργαλεία και τεχνολογίες που χρησιμοποιούνται στο πλαίσιο Selenium.
  • Η ροή της εκτέλεσης του Selenium Framework.
  • Διαφορετικά κρίσιμα σενάρια που χειρίζονται το πλαίσιο σας.

Ας συζητήσουμε λεπτομερώς: 

Τύπος του Framework και Key και μοναδικά χαρακτηριστικά του Framework:

Πρέπει να αναφέρετε τον τύπο του πλαισίου, όπως το υβριδικό πλαίσιο, το πλαίσιο του αντικειμένου σελίδας, το υβριδικό πλαίσιο του αντικειμένου σελίδας κ.λπ. 

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

  •  Προωθήστε την Αναφορά σε πραγματικό χρόνο με διαφορετικά εργαλεία όπως ELK στοίβα ή προσαρμοσμένη λειτουργία αναφοράς HTML / Αναφορά Allure / αναφορά έκτασης.
  • Προηγμένο πλαίσιο καταγραφής και εντοπισμού σφαλμάτων ή εργαλείο όπως Graylog.
  • Αναγνώριση εικόνας ή εικόνα Εξαγωγή ή επικύρωση δεδομένων με tesseract OCR τεχνολογίες
  • Ενσωμάτωση με πολλαπλά εργαλεία τρίτων όπως το εργαλείο διαχείρισης TestCase TestLink / JIRA κ.λπ., AutoIT / Sikuli για διαφορετική αλληλεπίδραση εγγενών εφαρμογών με το πλαίσιο Selenium.
  • Υλοποίηση διαφορετικών προηγμένων TestNg ακροατές / δημοσιογράφοι για προηγμένες δυνατότητες, όπως δοκιμαστική ενεργοποίηση των αποτυχημένων δοκιμών, χειρισμός του σχολιασμού TestNG στο χρόνο εκτέλεσης με IAnotationTransformerΚ.λπ.

Εργαλεία και τεχνολογίες που χρησιμοποιούνται στο πλαίσιο Selenium:

Μπορείτε να αναφέρετε τα εργαλεία και τις τεχνολογίες που χρησιμοποιούνται κατά την ανάπτυξη του πλαισίου, όπως:

  • Jenkins
  • Maven
  • ΔοκιμήNG
  • Java ως γλώσσα
  • Sikuli / AutoIT
  • Tesseract OCR 
  • ELK στοίβα
  • Graylog

Η ροή της εκτέλεσης του Selenium Framework:

Μπορείτε να αναφέρετε τη ροή της εκτέλεσης του πλαισίου, δηλαδή, πώς ενεργοποιείτε τις δοκιμαστικές σουίτες και πώς ρέει στις δοκιμαστικές περιπτώσεις / μεθόδους και μέχρι το Utility Framework όπως webutils, εργαλεία δεδομένων κ.λπ. Μπορείτε να ανατρέξετε στην παραπάνω ερώτηση όπου συζητήσαμε πώς να εξηγήσουμε τη ροή της εκτέλεσης του πλαισίου Selenium.

Διαφορετικά κρίσιμα σενάρια που χειρίζονται το πλαίσιο σας:

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

  • Επικύρωση ImageData.
  • Αυτοματοποίηση TestCases μέσω του εργαλείου TestCase Management.
  • Παράλληλη εκτέλεση εξαντλητικά σε διαφορετικά προγράμματα περιήγησης και πολλαπλές συνεδρίες από κάθε πρόγραμμα περιήγησης για μείωση του χρόνου εκτέλεσης.
  • Ενσωμάτωση βάσει παραθύρου και αυτοματοποίηση τέτοιων περιπτώσεων χρήσης κ.λπ.

Πώς να σχεδιάσετε σενάρια καταγραφής στο πλαίσιο Selenium;

Μπορείτε να χρησιμοποιήσετε το log4j για καταγραφή ή μπορείτε να χρησιμοποιήσετε υλοποίηση ταμπλό καταγραφής και εντοπισμού σφαλμάτων σε πραγματικό χρόνο με το Graylog, το οποίο βασικά χρησιμοποιεί το ElasticSearch στο backend για λεπτομέρειες καταγραφής και εντοπισμού σφαλμάτων σε πραγματικό χρόνο.

Ποια είναι τα σχέδια σχεδίασης που έχετε χρησιμοποιήσει κατά το σχεδιασμό του πλαισίου;

Μπορείτε να χρησιμοποιήσετε διαφορετικά μοτίβα σχεδίασης σύμφωνα με την ανάγκη και το σχεδιασμό του πλαισίου αυτοματισμού, όπως:

  • Εργοστασιακή σχεδίαση για εφαρμογή προγράμματος περιήγησης προγράμματος οδήγησης για πολλά προγράμματα περιήγησης (Chrome, IE, Firefox κ.λπ.) με διαφορετικά προγράμματα οδήγησης όπως τοπικό πρόγραμμα οδήγησης, απομακρυσμένο πρόγραμμα οδήγησης, πρόγραμμα οδήγησης συμβάντων κ.λπ.
  • Αφηρημένο σχέδιο εργοστασίων.
  • Μοτίβο σχεδίασης SingleTon για διαμορφωτή (φόρτωση δεδομένων ιδιοτήτων ή φόρτωση δεδομένων Yaml) για τα δεδομένα που σχετίζονται με τη διαμόρφωση.

Κρίσιμες ερωτήσεις συνέντευξης σεληνίου:

Πόσοι τρόποι μπορείτε να εκτελέσετε το σενάριο αυτοματοποίησης παράλληλα;

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

  • Με TestNG μέσω testng.xml και χρήση παράλληλα παραμέτρους νήματος.
  • Με εργαλεία κατασκευής όπως το εργαλείο κατασκευής Maven / Gradle στην παρακάτω προσέγγιση: 

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: 

  • Με τάξη ρομπότ 
  • Με την κατηγορία Keys στο Σελήνιο
  • Με την ένταξη του Sikuli
  • Με την ενοποίηση των AutoIt και Jacob (Java com Bridge) 

Τι είναι η μητρική διεπαφή του WebDriver;

SearchContext

Αναφέρετε τις βασικές διαφορές μεταξύ των βάζων POI και JXL;

Το POI υποστηρίζει μορφοποίηση υπό όρους, μορφοποίηση εμπλουτισμένου κειμένου ή μορφή xlsx, αλλά από την άλλη πλευρά, το JXL δεν υποστηρίζει καμία από αυτές τις δυνατότητες.

Η βιβλιοθήκη POI διατηρείται και ενημερώνεται σε σύγκριση με το JXL.

Πώς χειρίζεστε τις καθυστερήσεις δικτύου χρησιμοποιώντας το Selenium;

Μπορούμε να χρησιμοποιήσουμε τα ακόλουθα για να χειριστούμε την καθυστέρηση δικτύου χρησιμοποιώντας στο Selenium: 

Driver.manage.pageloadingtime

Ποιες είναι οι προσεγγίσεις που θα ακολουθήσετε για να χειριστείτε τη δοκιμή περιεχομένου Ajax με το Selenium WebDriver;

Το AJAX είναι βασικά ασύγχρονο JavaScript και XML. Όλη η επικοινωνία της εφαρμογής που βασίζεται στο AJAX βασίζεται σε ασύγχρονες κλήσεις, 

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

Ποιες είναι οι προκλήσεις ενώ εργάζεστε με κλήσεις AJAX στο Selenium WebDriver;

  • A. Στο AJAX, ο μερικός κώδικας της σελίδας DOM δημιουργείται / τροποποιείται μετά από μια ενέργεια, ενώ η σελίδα DOMM παραμένει η ίδια.
  • Β. Δεν είναι εύκολο να εκτελέσετε καλά καθορισμένους ισχυρισμούς σε εφαρμογές AJAX.
  • Γ. Πρέπει να συνεχίζετε συνεχώς να ακούτε τα γεγονότα μέχρι να λήξει ο χρόνος και να αναλάβετε δράση βάσει αυτού, και μερικές φορές 
  • γίνεται σποραδική στη φύση.
  • Δ. Ο παρατεταμένος χρόνος αναμονής καθιστά τα σενάρια και το πρόγραμμα περιήγησης αργά και μερικές φορές το πρόγραμμα περιήγησης μπορεί να είναι νεκρό.

Για να εργαστείτε με την εφαρμογή AJAX, ίσως χρειαστεί να χρησιμοποιήσετε αναμονή για τις παραπάνω περιπτώσεις χρήσης: 

  • Σιωπηρή αναμονή
  • Άμεση αναμονή 
  • Άπταιστα περιμένετε 
  • Σετ ταχύτητας
  • Νήμα. Κοιμάται
  • WebDriverWait

Ποια είναι η προσέγγιση για συνεργασία με το 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 χρησιμοποιώντας διαφορετικό μηχανισμό αναμονής: 

  • περιμένετε
  • ExplicitWait με διαφορετικές αναμενόμενες συνθήκες.
  • FluentWait

Αναφέρετε τις βασικές διαφορές μεταξύ TestNg @BeforeTest και @BeforeMethod; 

Στο TestNg @BeforeTest και @BeoreMethod έχει διαφορετικές πτυχές, είναι:

  • @beforeMethod: αυτό το μπλοκ κώδικα, δηλαδή η μέθοδος με αυτόν τον σχολιασμό, εκτελείται μία φορά πριν από κάθε μέθοδο @ test του TestNG
  • @beforetest: Η μέθοδος με αυτόν τον σχολιασμό εκτελείται μία φορά πριν από κάθε testTag του TestNG.xml.

Αναφέρετε τους διαφορετικούς τύπους API WebDriver που υπάρχουν στο Selenium;

  • Πρόγραμμα οδήγησης Chrome
  • Πρόγραμμα οδήγησης Firefox
  • Πρόγραμμα οδήγησης Gecko
  • Πρόγραμμα οδήγησης InternetExplorer
  • Πρόγραμμα οδήγησης Safari
  • Πρόγραμμα οδήγησης Opera
  • Πρόγραμμα οδήγησης htmlunit
  • PhantomJSDriver
  • Πρόγραμμα οδήγησης Android
  • Πρόγραμμα οδήγησης iPhone
  • EventFiringWebDriver

Πόσοι τρόποι μπορείτε να επιτύχετε χωρίς κεφαλή εκτέλεση με το Selenium;

Μπορούμε να χρησιμοποιήσουμε τα παρακάτω προγράμματα οδήγησης για να επιτύχουμε αυτοματισμούς με το Selenium: 

  • PhantomJSDriver
  • Πρόγραμμα οδήγησης htmlunit

Τι είναι το 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;

  • WebDriverException
  • NoSuchElementException
  • StaleElementReferenceException
  • TimeoutException
  • NoAlertPresentException
  • NoSuchWindowException
  • IlegalStateException

Πώς διαγράφετε τα 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);

Πώς να κάνετε διπλό κλικ στο σελήνιο;

Μπορούμε να χρησιμοποιήσουμε την κατηγορία Actions στο Selenium για να εκτελέσουμε τις λειτουργίες 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 σε διάφορες πτυχές: 

  • Εγκατάσταση: το puppeteer είναι εύκολο να εγκατασταθεί σε σύγκριση με το Selenium.
  • Το Puppeteer υποστηρίζει μόνο το Chrome από τώρα. Το Selenium υποστηρίζει ένα ευρύ φάσμα προγραμμάτων περιήγησης.
  • Η εγγενής γλώσσα για το puppeteer είναι ο κόμβος JS. από την άλλη πλευρά, το Σελήνιο υποστηρίζει πολλές γλώσσες.
  • Το Puppeteer είναι ταχύτερο από το Σελήνιο.
  • Το puppeteer έχει αναπτυχθεί και συντηρηθεί από το Google Chrome Dev και από την άλλη πλευρά, το Selenium έχει τεράστια υποστήριξη κοινότητας ανοιχτού κώδικα

HardAssert εναντίον SoftAssert;

Και οι δύο προσεγγίσεις ισχυρισμού προέρχονται από το TestNg και καθεμία από αυτές έχει τα αντίστοιχα πλεονεκτήματα και μειονεκτήματα

  • Μετά τη δήλωση HardAssert, η εκτέλεση σταματά (εάν ο ισχυρισμός αποτύχει) και το υπόλοιπο τμήμα του TestScript παραβλέπεται. Από την άλλη πλευρά, χρησιμοποιώντας το Soft Assert, μπορούμε να συνεχίσουμε με το υπόλοιπο των δοκιμαστικών σεναρίων, ακόμη κι αν υπάρχει αποτυχία ισχυρισμού συμβαίνει εν τω μεταξύ.  
  • Μόλις ο σκληρός ισχυρισμός αποτύχει, αναφέρει άμεσες αστοχίες του σεναρίου, αλλά για το soft assert, παρακολουθεί όλες τις αποτυχίες του ισχυρισμού (εάν υπάρχει) στο δοκιμαστικό σενάριο και στο τέλος, αναφέρει όλες τις αποτυχίες μαζί.
  • Το Soft Assert είναι πάντα ασφαλές στη χρήση και μπορείτε να δοκιμάσετε το σενάριό σας από την αρχή έως το τέλος και να ρίξετε μια ματιά σε όλες τις αποτυχίες μαζί και να το επιλύσετε.

 Όταν βρίσκεστε υπό τις συνθήκες όπου πρέπει να έχετε μια δήλωση που είναι προφανής, δηλαδή, χωρίς αυτό το βήμα, τα υπόλοιπα βήματα του σεναρίου δεν έχουν νόημα να εκτελεστούν, τότε μπορείτε να βάλετε το 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;

  • Μερικές φορές το Sikuli δρα σποραδικά και δεν είναι σταθερό και αξιόπιστο όλη την ώρα. ας πούμε ότι πρέπει να εκτελέσουμε κάποιες ενέργειες σε μερικές εικόνες και εκτελούμε ένα παράλληλο σενάριο δοκιμής, τότε ένα από τα σενάρια αποτυγχάνει επειδή, σε παράλληλη εκτέλεση, μια εικόνα επικαλύπτεται με μια άλλη εικόνα, ώστε η λειτουργία σε μία από τις εικόνες θα μπορούσε δεν εκτελείται.
  • Το Sikuli κάνει το σενάριο Selenium πιο αργό, καθώς η ενσωμάτωση με οποιαδήποτε εργαλεία τρίτων κάνει το Selenium Automation πιο αργό στη φύση.
  • Το Siklu εκτελεί λειτουργίες με βάση τις εικόνες και τις τοποθεσίες τους, οπότε αν αυτές οι τοποθεσίες αλλάξουν, τότε θα δείτε αποτυχία στο δοκιμαστικό σας σενάριο άρα δεν είναι τόσο συνεπές.

Πώς να εκτελέσετε δοκιμές βάσης δεδομένων χρησιμοποιώντας σελήνιο;

Μπορούμε να πραγματοποιήσουμε δοκιμές βάσεων δεδομένων χρησιμοποιώντας σελήνιο στην παρακάτω αρθρωτή προσέγγιση: 

  • Σύνδεση βάσης δεδομένων Selenium με Java JDBC. 
  • Δημιουργήστε μια δήλωση DB. 
  • Χρησιμοποιήστε τη δήλωση για να εκτελέσετε ένα ερώτημα SQL και να επιστρέψετε τα δεδομένα. 
  • Κλείσιμο της σύνδεσης βάσης δεδομένων.

Ακολουθεί το παρακάτω απόσπασμα κώδικα για τα παραπάνω βήματα: 

Ρύθμιση σύνδεσης 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.  

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

Σχετικά με την 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