handling web tables frames
Στο τελευταίο σεμινάριο Selenium WebDriver, μάθαμε διάφορα κοινά και χρησιμοποιημένες εντολές Selenium WebDriver συμπεριλαμβανομένων σημαντικών θεμάτων όπως ο χειρισμός iframe και εξαιρέσεις σε σενάρια Selenium.
Προχωράμε στην περιεκτική μας σειρά μαθημάτων για το Σελήνιο , σε αυτό το σεμινάριο θα συζητήσουμε για χειρισμός πινάκων Ιστού, iframe και δυναμικών στοιχείων που αποτελούν ουσιαστικό μέρος οποιουδήποτε διαδικτυακού έργου.
Αυτό το σεμινάριο αποτελείται από 3 διαφορετικά θέματα και τους μηχανισμούς χειρισμού τους σε σενάριο σεληνίου.
- Πίνακες Ιστού / πίνακες HTML
- Πλαίσια
- Δυναμικά στοιχεία
Τι θα μάθετε:
- # 1) Πίνακες Ιστού / Πίνακες HTML
- # 2) Κορνίζες
- # 3) Δυναμικά στοιχεία
- συμπέρασμα
- Συνιστώμενη ανάγνωση
# 1) Πίνακες Ιστού / Πίνακες HTML
Σε αυτήν την ενότητα, θα μάθουμε για τους πίνακες ιστού ή τους πίνακες HTML σε μια ιστοσελίδα, τις ετικέτες που είναι διαθέσιμες σε HTML και τον τρόπο χειρισμού δυναμικών πινάκων ιστού.
Οι πίνακες Web είναι βασικά μια ομάδα στοιχείων που αποθηκεύονται λογικά σε μορφή γραμμής και στήλης. Χρησιμοποιείται για την οργάνωση παρόμοιων πληροφοριών σε μια ιστοσελίδα.
Ακολουθεί ένα παράδειγμα πίνακα Html:
Ακολουθεί το απόσπασμα της δομής HTML ενός πίνακα HTML:
Οι παρακάτω ετικέτες ορίζονται γενικά σε πίνακες html:
Η ετικέτα «notable» ορίζει τον πίνακα HTML.
2. Η ετικέτα δεν ορίζει ένα κοντέινερ για σειρές και στήλες.
3. ορίζουμε σειρές σε έναν πίνακα HTML.
4.'td '/' th 'ορίζουν τη στήλη ενός πίνακα HTML.
Βρείτε τις λεπτομέρειες ενός πίνακα ιστού:
Υπάρχουν πολλοί τρόποι με τους οποίους μπορούμε να χειριστούμε έναν πίνακα Ιστού.
πώς να ενημερώσετε τα Windows 10 bios
Προσέγγιση # 1 :
Παρακάτω είναι το xpath ενός από τα κελιά στον πίνακα html. Ας πούμε 'όνομα'
// div (@ id = «main») / table (1) / tbody / tr (1) / th (1)
tr (1) ορίζει την πρώτη σειρά και th (1) ορίζει την πρώτη στήλη.
Αν ένας αριθμός σειρών και στηλών είναι πάντα σταθερός, ας υποθέσουμε ότι ο πίνακας HTML θα έχει πάντα 5 σειρές και 3 στήλες.
for(int numberOfRows=1; numberOfRows<=5; numberOfRows++) { for(int numberOfCol=1; numberOfCol <=3; numberOfCol++) { System.out.println(driver.findElement(By.xpath (“//div(@id='main')/table(1)/tbody/tr (“+numberOfRows+”)/th(“+numberOfCol+”)”))); } }
Εκτός από τον αριθμό γραμμής και στήλης, κάθε στοιχείο του XPath παραμένει το ίδιο. Έτσι μπορείτε να επαναλάβετε χρησιμοποιώντας το 'for loop' για κάθε σειρά και στήλη όπως αναφέρεται παραπάνω.
Προσέγγιση # 2 :
Η πρώτη προσέγγιση είναι πιο κατάλληλη για τον πίνακα που δεν αλλάζει τις διαστάσεις του και παραμένει πάντα η ίδια. Η παραπάνω προσέγγιση δεν θα είναι η τέλεια λύση για δυναμικές αλλαγές πινάκων Ιστού.
Ας πάρουμε για παράδειγμα τον πίνακα HTML:
WebElement htmltable=driver.findElement(By.xpath('//*(@id='main')/table(1)/tbody')); List rows=htmltable.findElements(By.tagName('tr')); for(int rnum=0;rnum Βήμα 1 : Πρώτα πάρτε ολόκληρο τον πίνακα HTML και αποθηκεύστε το σε μια μεταβλητή «htmltable» τύπου web στοιχείο.
Βήμα 2 : Αποκτήστε όλες τις σειρές με το όνομα ετικέτας «tr» και αποθηκεύστε όλα τα στοιχεία σε μια λίστα στοιχείων ιστού. Τώρα όλα τα στοιχεία με την ετικέτα «tr» αποθηκεύονται στη λίστα «σειρές».
Βήμα 3 : Περάστε κάθε σειρά και λάβετε τη λίστα των στοιχείων με ετικέτα «Ου». «Rows.get (0)» θα δώσει την πρώτη σειρά και «FindElements (By.tagName ( «Ου» )) ' θα δώσει λίστα στηλών για τη σειρά.
Βήμα 4 : Επαναλάβετε τη χρήση 'Στήλες .getsize ()' και λάβετε τις λεπτομέρειες κάθε κελιού.
Σημείωση : Η παραπάνω προσέγγιση θα είναι καταλληλότερη εάν οι διαστάσεις του πίνακα αλλάξουν δυναμικά.
Αυτό ολοκληρώνει το θέμα του τρόπου χειρισμού πινάκων ιστού στο σελήνιο. Στη συνέχεια, θα μάθουμε για το χειρισμό ενός στοιχείου μέσα σε ένα πλαίσιο.
# 2) Κορνίζες
Σε αυτήν την ενότητα, θα μάθουμε για τα πλαίσια σε μια ιστοσελίδα και πώς να προσδιορίσουμε τα πλαίσια. Επίσης, θα μάθουμε πώς μπορούμε να χειριστούμε ένα πλαίσιο στο Selenium WebDriver.
Πολλοί προγραμματιστές θέλουν να τοποθετήσουν στοιχεία μέσα σε ένα πλαίσιο. Το πλαίσιο είναι ακριβώς όπως ένα δοχείο όπου λίγα στοιχεία μπορούν να ομαδοποιηθούν.
Αναγνώριση πλαισίου:
Διαφορετικοί τρόποι για να γνωρίζετε εάν το στοιχείο υπάρχει μέσα σε ένα πλαίσιο ή όχι
# 1 . Κάντε δεξί κλικ στο στοιχείο. Ελέγξτε εάν είναι διαθέσιμη η επιλογή 'Αυτό το πλαίσιο'. Εάν αυτή η επιλογή πλαισίου είναι διαθέσιμη, αυτό σημαίνει ότι το στοιχείο βρίσκεται μέσα σε ένα πλαίσιο.
#δύο . Προβάλετε την πηγή σελίδας της ιστοσελίδας και ελέγξτε αν υπάρχει διαθέσιμη ετικέτα για το «iframe».
τι είναι ένα καλό πρόγραμμα λήψης mp3 για Android

Επαληθεύστε τον αριθμό των καρέ σε μια ιστοσελίδα :
Όλα τα καρέ έχουν το όνομα της ετικέτας ως 'iframe'.
Λίστα πλαισίων = driver.findElements (By.tagName ( 'Iframe' ))
System.out.println (frameList.size ());
Στο παραπάνω παράδειγμα : λίστα πλαισίων θα έχει όλη τη λίστα των πλαισίων και frameList.size () θα δώσει τον αριθμό των καρέ.
Χειρισμός ενός στοιχείου μέσα στο πλαίσιο:
Εάν ένα στοιχείο βρίσκεται μέσα σε ένα πλαίσιο, τότε ο έλεγχος πρέπει να αλλάξει στο πλαίσιο πρώτα και στη συνέχεια να αρχίσει να λειτουργεί στα στοιχεία.
Βήμα 1 : Για εναλλαγή μέσα σε ένα πλαίσιο:
driver.switchTo (). πλαίσιο (1); // αριθμός πλαισίου πρόσβασης ως παράμετρος.
ή
driver.switchTo (). πλαίσιο ('Όνομα καρέ'); // όνομα πλαισίου pass ως παράμετρος.
ή
driver.switchTo (). πλαίσιο ('xpath του πλαισίου');
Βήμα 2 : Μετά την αλλαγή μέσα σε ένα πλαίσιο, το σελήνιο θα μπορεί να λειτουργεί με στοιχεία.
driver.findElement ( // ********************************************);
driver.findElement ( // *********************************************);
Εδώ, μάθαμε πώς να χειριζόμαστε ένα στοιχείο μέσα στο πλαίσιο και στη συνέχεια θα καλύψουμε για τους διαφορετικούς τρόπους χειρισμού του δυναμικού στοιχείου.
# 3) Δυναμικά στοιχεία
Σε αυτήν την ενότητα θα μάθουμε διαφορετικούς τρόπους για να χειριστούμε δυναμικό στοιχείο και να κατασκευάσουμε το γενικό Xpath.
Σε λίγα σενάρια, τα χαρακτηριστικά των στοιχείων αλλάζουν δυναμικά. Μπορεί να είναι «id», «name» κ.λπ.
Παράδειγμα : ας πούμε 'id' ενός πεδίου ονόματος χρήστη είναι 'username_123' και το XPath θα είναι
// * (@ id = «όνομα χρήστη_123 ′) αλλά όταν ανοίξετε ξανά τη σελίδα, το πεδίο 'id' του πεδίου 'όνομα χρήστη' ενδέχεται να έχει αλλάξει και η νέα τιμή να είναι 'όνομα χρήστη_234'.
Σε αυτήν την περίπτωση, το τεστ θα αποτύχει επειδή το σελήνιο δεν μπόρεσε να βρει το XPath που έχετε περάσει νωρίτερα καθώς το αναγνωριστικό του πεδίου έχει αλλάξει σε κάποια άλλη τιμή.
Υπάρχουν πολλές προσεγγίσεις ανάλογα με τον τύπο του προβλήματος:
Τύπος προβλήματος 1: Εάν ένα μέρος του χαρακτηριστικού αλλάξει .
Παράδειγμα : Όπως στο παραπάνω παράδειγμα, η τιμή id αλλάζει αλλά λίγα πεδία παραμένουν σταθερά.
Το «όνομα χρήστη_123» άλλαξε σε «όνομα χρήστη_234» αλλά το «όνομα χρήστη» παρέμενε πάντα σταθερό.
Μπορείτε να δημιουργήσετε το xpath όπως παρακάτω:
πρόγραμμα οδήγησης.findElement (By.xpath ( '// * (περιέχει (@ id,' όνομα χρήστη '))' sendkeys () 'Όνομα χρήστη' );
οδηγός . findElement (Από.xpath ( '// * (ξεκινά με (@ id,' user '))' sendkeys () 'Όνομα χρήστη' );
«Περιέχει» είναι μια μέθοδος java που ελέγχει αν το id περιέχει το όνομα χρήστη του substring.
ξεκινάει με() ελέγχει αν κάποιο χαρακτηριστικό ξεκινά με 'user'.
Τύπος προβλήματος 2: Εάν ολόκληρη η τιμή του χαρακτηριστικού αλλάξει δυναμικά.
Και πάλι, σε αυτήν την περίπτωση, θα μπορούσαν να υπάρχουν διαφορετικές προσεγγίσεις:
Για παράδειγμα : εάν το αναγνωριστικό του πεδίου «σύνδεσης» αλλάζει δυναμικά και δεν υπάρχει σταθερή τιμή για τη χρήση περιέχει τη μέθοδο.
λογισμικό καλύτερης απόδοσης για Windows 10
Λύση : Χρήση του sendKeys.
Το Selenium παρέχει διαφορετικά API για χρήση πλήκτρων λειτουργίας. Για παράδειγμα, πλήκτρο καρτέλας, πληκτρολογήστε πλήκτρα, F5 κ.λπ.
Βήμα 1 : Εισάγετε τον κωδικό πρόσβασης
driver.findElement (By.id ( 'Κωδικός πρόσβασης' sendKeys ('κωδικός πρόσβασης'));
Βήμα 2 : Χρησιμοποιήστε βασικές λειτουργίες για πλοήγηση στο στοιχείο.
driver.findElement (By.id ( 'Κωδικός πρόσβασης' sendKeys (Κλειδιά. ΕΙΣΑΓΩ ))
ή
driver.findElement (By.id ( 'Κωδικός πρόσβασης' sendKeys (Κλειδιά. ΑΥΤΙ ))
συμπέρασμα
Πίνακες Ιστού, πλαίσια και δυναμικά στοιχεία αποτελούν ουσιαστικό μέρος κάθε έργου Ιστού. Είναι πάντα επιθυμητό να γράφετε αποτελεσματικό κώδικα για τη διαχείριση πινάκων ιστού και δυναμικών στοιχείων.
Κατανόηση της κατασκευής του γενικού XPath που είναι πολύ χρήσιμο κατά το χειρισμό δυναμικών στοιχείων. Σε περίπτωση πλαισίου, το σενάριό σας πρέπει να αλλάξει το πλαίσιο και στη συνέχεια να λειτουργήσει στο στοιχείο.
Επόμενο σεμινάριο # 19 : Στο επόμενο σεμινάριο Selenium θα μάθουμε σχετικά με τους τύπους εξαιρέσεων και τον τρόπο χειρισμού εξαιρέσεων σε Java σενάρια Selenium.
Παρακαλώ δημοσιεύστε τα ερωτήματά σας που σχετίζονται με πίνακες Web, πλαίσια και δυναμικό στοιχείο χειρισμού, εάν έχετε.
Συνιστώμενη ανάγνωση
- Πώς να εντοπίσετε στοιχεία σε προγράμματα περιήγησης Chrome και IE για τη δημιουργία σεναρίων σεληνίου - Σεμινάριο Tutorial # 7
- Χρήση του Selenium Select Class για το χειρισμό των αναπτυσσόμενων στοιχείων σε μια ιστοσελίδα - Selenium Tutorial # 13
- Selenium Locators: Προσδιορισμός στοιχείων Web χρησιμοποιώντας XPath στο Selenium (παραδείγματα)
- Πώς να χρησιμοποιήσετε το CSS Selector για τον προσδιορισμό στοιχείων Web για σενάρια Selenium - Selenium Tutorial # 6
- Ελέγξτε την ορατότητα των στοιχείων Web χρησιμοποιώντας διάφορους τύπους εντολών WebDriver - Selenium Tutorial # 14
- Cucumber Selenium Tutorial: Αγγούρι Java Selenium WebDriver Integration
- Ενσωμάτωση σεληνίου με JMeter
- Χειρισμός iFrames Χρησιμοποιώντας τη μέθοδο Selenium WebDriver switchTo ()