Τι είναι το Κείμενο Σύνδεσης στο Σελήνιο;
Ένα κείμενο συνδέσμου στο Σελήνιο χρησιμοποιείται για τον προσδιορισμό των υπερσυνδέσμων σε μια ιστοσελίδα. Προσδιορίζεται με τη βοήθεια μιας ετικέτας αγκύρωσης. Για τη δημιουργία των υπερσυνδέσμων σε μια ιστοσελίδα, μπορούμε να χρησιμοποιήσουμε μια ετικέτα αγκύρωσης ακολουθούμενη από τον σύνδεσμο Κείμενο.
Σύνδεσμοι που ταιριάζουν με ένα κριτήριο
Μπορείτε να έχετε πρόσβαση στους συνδέσμους χρησιμοποιώντας μια ακριβή ή μερική αντιστοίχιση του κειμένου του συνδέσμου. Τα παρακάτω παραδείγματα παρέχουν σενάρια όπου θα υπήρχαν πολλαπλοί αγώνες και θα εξηγούσαν πώς θα αντιμετώπιζε το WebDriver.
Σε αυτό το σεμινάριο, θα μάθουμε τις διαθέσιμες μεθόδους για την εύρεση και πρόσβαση στους συνδέσμους χρησιμοποιώντας το Webdriver. Επίσης, θα συζητήσουμε μερικά από τα κοινά προβλήματα που αντιμετωπίζετε κατά την πρόσβαση στους συνδέσμους και θα συζητήσουμε περαιτέρω για τον τρόπο επίλυσής τους.
Εδώ είναι αυτό που θα μάθετε-
- Πρόσβαση σε συνδέσμους χρησιμοποιώντας την ακριβή αντιστοίχιση κειμένου: By.linkText ()
- Πρόσβαση σε συνδέσμους χρησιμοποιώντας μερική αντιστοίχιση κειμένου: By.partialLinkText ()
- Πώς να λάβετε πολλαπλούς συνδέσμους με το ίδιο κείμενο συνδέσμου
- Ευαισθησία κεφαλαίου για κείμενο κειμένου
- Σύνδεσμοι έξω και μέσα σε ένα μπλοκ
Πρόσβαση σε συνδέσμους χρησιμοποιώντας την ακριβή αντιστοίχιση κειμένου: By.linkText ()
Η πρόσβαση στους συνδέσμους χρησιμοποιώντας το ακριβές κείμενο του συνδέσμου γίνεται μέσω της μεθόδου By.linkText () . Ωστόσο, εάν υπάρχουν δύο σύνδεσμοι που έχουν το ίδιο κείμενο συνδέσμου, αυτή η μέθοδος θα έχει πρόσβαση μόνο στον πρώτο. Εξετάστε τον παρακάτω κώδικα HTML
Όταν προσπαθείτε να εκτελέσετε τον κωδικό WebDriver παρακάτω, θα έχετε πρόσβαση στον πρώτο σύνδεσμο "κλικ εδώ"
Κώδικας:
εισαγωγή org.openqa.selenium.By;εισαγωγή org.openqa.selenium.WebDriver;εισαγωγή org.openqa.selenium.chrome.ChromeDriver;δημόσια τάξη MyClass {Δημόσιο στατικό κενό (String [] args) {String baseUrl = "http://demo.guru99.com/test/link.html";System.setProperty ("webdriver.chrome.driver", "G: \\ chromedriver.exe");Πρόγραμμα οδήγησης WebDriver = νέο ChromeDriver ();driver.get (baseUrl);driver.findElement (By.linkText ("κάντε κλικ εδώ")). κάντε κλικ ();System.out.println ("ο τίτλος της σελίδας είναι: + driver.getTitle ());driver.quit ();}}
Εδώ είναι πώς λειτουργεί-
Ως αποτέλεσμα, θα μεταφερθείτε αυτόματα στο Google.
Πρόσβαση σε συνδέσμους χρησιμοποιώντας μερική αντιστοίχιση κειμένου: By.partialLinkText ()
Η πρόσβαση σε συνδέσμους χρησιμοποιώντας ένα τμήμα του κειμένου του συνδέσμου γίνεται με τη μέθοδο By.partialLinkText () . Εάν καθορίσετε ένα κείμενο μερικού συνδέσμου που έχει πολλές αντιστοιχίες, θα προσπελαστεί μόνο το πρώτο παιχνίδι. Εξετάστε τον παρακάτω κώδικα HTML.
Όταν εκτελείτε τον κωδικό WebDriver παρακάτω, θα μεταφερθείτε στο Google.
Κώδικας:
εισαγωγή org.openqa.selenium.By;εισαγωγή org.openqa.selenium.WebDriver;εισαγωγή org.openqa.selenium.chrome.ChromeDriver;δημόσια τάξη P1 {Δημόσιο στατικό κενό (String [] args) {String baseUrl = "http://demo.guru99.com/test/accessing-link.html";System.setProperty ("webdriver.chrome.driver", "G: \\ chromedriver.exe");Πρόγραμμα οδήγησης WebDriver = νέο ChromeDriver ();driver.get (baseUrl);driver.findElement (By.partialLinkText ("εδώ")). κάντε κλικ ();System.out.println ("Ο τίτλος της σελίδας είναι: + driver.getTitle ());driver.quit ();}}
Πώς να λάβετε πολλαπλούς συνδέσμους με το ίδιο κείμενο συνδέσμου
Λοιπόν, πώς να ξεπεράσετε το παραπάνω πρόβλημα; Σε περιπτώσεις όπου υπάρχουν πολλοί σύνδεσμοι με το ίδιο κείμενο συνδέσμου και θέλουμε να αποκτήσουμε πρόσβαση στους συνδέσμους διαφορετικούς από τον πρώτο, πώς θα το κάνουμε;
Σε τέτοιες περιπτώσεις, γενικά, χρησιμοποιούνται διαφορετικοί εντοπιστές… By.xpath (), By.cssSelector () ή By.tagName ().
Η πιο συχνά χρησιμοποιούμενη είναι το By.xpath (). Είναι το πιο αξιόπιστο, αλλά φαίνεται περίπλοκο και μη αναγνώσιμο.
Ευαισθησία κεφαλαίου για κείμενο κειμένου
Οι παράμετροι για το By.linkText () και το By.partialLinkText () είναι και οι δύο διάκριση πεζών-κεφαλαίων, πράγμα που σημαίνει ότι έχει σημασία η κεφαλαιοποίηση Για παράδειγμα, στην αρχική σελίδα της Mercury Tours, υπάρχουν δύο σύνδεσμοι που περιέχουν το κείμενο "egis" - ένας είναι ο σύνδεσμος "ΕΓΓΡΑΦΗ" που βρίσκεται στο επάνω μενού και ο άλλος είναι ο σύνδεσμος "Εγγραφή εδώ" που βρίσκεται στο κάτω δεξιό τμήμα της σελίδας.
Αν και οι δύο σύνδεσμοι περιέχουν την ακολουθία χαρακτήρων "egis", ένας είναι η μέθοδος "By.partialLinkText ()" θα έχει πρόσβαση σε αυτούς τους δύο συνδέσμους ξεχωριστά ανάλογα με την κεφαλαιοποίηση των χαρακτήρων. Δείτε το δείγμα κώδικα παρακάτω.
Κώδικας
Δημόσιο στατικό κενό (String [] args) {String baseUrl = "http://demo.guru99.com/test/newtours/";System.setProperty ("webdriver.chrome.driver", "G: \\ chromedriver.exe");Πρόγραμμα οδήγησης WebDriver = νέο ChromeDriver ();driver.get (baseUrl);Συμβολοσειρά theLinkText = driver.findElement (Από.partialLinkText ("egis")).getText ();System.out.println (τοLinkText);theLinkText = driver.findElement (Από.partialLinkText ("EGIS")).getText ();System.out.println (τοLinkText);driver.quit ();}