Κείμενο συνδέσμου και μερικό κείμενο συνδέσμου σε Selenium
⚡ Έξυπνη Σύνοψη
Κείμενο συνδέσμου και μερικό κείμενο συνδέσμου σε Selenium Εντοπίστε υπερσυνδέσμους σε μια ιστοσελίδα μέσω του κειμένου αγκύρωσης. Η μέθοδος By.linkText() ταιριάζει με το ακριβές κείμενο, ενώ η μέθοδος By.partialLinkText() ταιριάζει με ένα τμήμα, και και οι δύο εντοπιστές κάνουν διάκριση πεζών-κεφαλαίων και επιστρέφουν την πρώτη αντιστοίχιση.
Τι είναι το Κείμενο Συνδέσμου Selenium?
A Σύνδεσμος κειμένου σε Selenium χρησιμοποιείται για την αναγνώριση των υπερσυνδέσμων σε μια ιστοσελίδα. Καθορίζεται με τη βοήθεια μιας ετικέτας αγκύρωσης. Για τη δημιουργία των υπερσυνδέσμων σε μια ιστοσελίδα, μπορούμε να χρησιμοποιήσουμε μια ετικέτα αγκύρωσης ακολουθούμενη από το σύνδεσμο Κείμενο.
Σύνδεσμοι που ταιριάζουν με ένα κριτήριο
Οι σύνδεσμοι μπορούν να προσπελαστούν χρησιμοποιώντας μια ακριβή ή μερική αντιστοίχιση του κειμένου συνδέσμου τους. Τα παρακάτω παραδείγματα παρέχουν σενάρια όπου θα υπήρχαν πολλές αντιστοιχίσεις και θα εξηγούσαν πώς θα τις αντιμετώπιζε το WebDriver.
Σε αυτό το σεμινάριο, θα μάθουμε τις διαθέσιμες μεθόδους εύρεσης και πρόσβασης στους Συνδέσμους χρησιμοποιώντας το Webdriver. Επίσης, θα συζητήσουμε μερικά από τα κοινά προβλήματα που αντιμετωπίζετε κατά την πρόσβαση στους Συνδέσμους και θα συζητήσουμε περαιτέρω τον τρόπο επίλυσής τους.
Πλήρες κείμενο συνδέσμου σε Selenium – By.linkText()
Η πρόσβαση σε συνδέσμους χρησιμοποιώντας το ακριβές κείμενο συνδέσμου τους γίνεται μέσω της μεθόδου By.linkText().. Ωστόσο, εάν υπάρχουν δύο σύνδεσμοι που έχουν το ίδιο κείμενο συνδέσμου, αυτή η μέθοδος θα έχει πρόσβαση μόνο στον πρώτο. Εξετάστε τον παρακάτω κώδικα HTML
Όταν προσπαθείτε να εκτελέσετε τον κώδικα WebDriver παρακάτω, θα έχετε πρόσβαση στον πρώτο σύνδεσμο "κάντε κλικ εδώ".
Code:
import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; public class MyClass { public static void main(String[] args) { String baseUrl = "https://demo.guru99.com/test/link.html"; System.setProperty("webdriver.chrome.driver","G:\\chromedriver.exe"); WebDriver driver = new ChromeDriver(); driver.get(baseUrl); driver.findElement(By.linkText("click here")).click(); System.out.println("title of page is: " + driver.getTitle()); driver.quit(); } }
Εδώ είναι πώς λειτουργεί -
Ως αποτέλεσμα, θα μεταφερθείτε αυτόματα στο Google.
Ολοκληρώστε το κείμενο μερικού συνδέσμου σε Selenium – By.partialLinkText()
Η πρόσβαση σε συνδέσμους χρησιμοποιώντας ένα τμήμα του κειμένου συνδέσμου τους γίνεται χρησιμοποιώντας το By.partialLinkText() μέθοδος. Εάν καθορίσετε ένα μερικό κείμενο συνδέσμου που έχει πολλές αντιστοιχίσεις, θα είναι δυνατή η πρόσβαση μόνο στην πρώτη αντιστοίχιση. Εξετάστε τον παρακάτω κώδικα HTML.
Όταν εκτελέσετε τον κώδικα WebDriver παρακάτω, θα μεταφερθείτε ακόμα στο Google.
Code:
import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; public class P1 { public static void main(String[] args) { String baseUrl = "https://demo.guru99.com/test/accessing-link.html"; System.setProperty("webdriver.chrome.driver","G:\\chromedriver.exe"); WebDriver driver = new ChromeDriver(); driver.get(baseUrl); driver.findElement(By.partialLinkText("here")).click(); System.out.println("Title of page is: " + driver.getTitle()); driver.quit(); } }
Πώς να αποκτήσετε πολλούς συνδέσμους με το ίδιο κείμενο συνδέσμου
Λοιπόν, πώς να ξεπεράσετε το παραπάνω πρόβλημα; Σε περιπτώσεις όπου υπάρχουν πολλοί σύνδεσμοι με το ίδιο κείμενο συνδέσμου και θέλουμε να έχουμε πρόσβαση σε άλλους συνδέσμους εκτός από τον πρώτο, πώς το κάνουμε;
Σε τέτοιες περιπτώσεις, γενικά, χρησιμοποιούνται διαφορετικοί εντοπιστές, δηλαδή… By.xpath(), By.cssSelector() ή By.tagName().
Πιο συχνά χρησιμοποιείται είναι η By.xpath(). Είναι το πιο αξιόπιστο αλλά φαίνεται πολύπλοκο και μη αναγνώσιμο.
Διάκριση πεζών-κεφαλαίων για κείμενο συνδέσμου
Οι παράμετροι για By.linkText() και By.partialLinkText() και τα δύο έχουν διάκριση πεζών-κεφαλαίων, πράγμα που σημαίνει ότι η χρήση κεφαλαίων έχει σημασία. Για παράδειγμα, σε Mercury Η αρχική σελίδα των περιηγήσεων, υπάρχουν δύο σύνδεσμοι που περιέχουν το κείμενο "egis" – ο ένας είναι ο σύνδεσμος "ΕΓΓΡΑΦΗ" που βρίσκεται στο επάνω μενού και ο άλλος είναι ο σύνδεσμος "Εγγραφή εδώ" που βρίσκεται στο κάτω δεξιό τμήμα της σελίδας.
Παρόλο που και οι δύο σύνδεσμοι περιέχουν την ακολουθία χαρακτήρων "egis", η μέθοδος "By.partialLinkText()" θα έχει πρόσβαση σε αυτούς τους δύο συνδέσμους ξεχωριστά, ανάλογα με την κεφαλαιοποίηση των χαρακτήρων. Δείτε το δείγμα κώδικα παρακάτω.
Code
public static void main(String[] args) { String baseUrl = "https://demo.guru99.com/test/newtours/"; System.setProperty("webdriver.chrome.driver","G:\\chromedriver.exe"); WebDriver driver = new ChromeDriver(); driver.get(baseUrl); String theLinkText = driver.findElement(By .partialLinkText("egis")) .getText(); System.out.println(theLinkText); theLinkText = driver.findElement(By .partialLinkText("EGIS")) .getText(); System.out.println(theLinkText); driver.quit(); }
Σύνδεσμοι έξω και μέσα σε ένα μπλοκ
Το πιο πρόσφατο πρότυπο HTML5 επιτρέπει την τοποθέτηση των ετικετών εντός και εκτός ετικετών σε επίπεδο μπλοκ όπως , ή . Οι μέθοδοι "By.linkText()" και "By.partialLinkText()" μπορούν να έχουν πρόσβαση σε έναν σύνδεσμο που βρίσκεται έξω και μέσα σε αυτά τα στοιχεία σε επίπεδο μπλοκ. Εξετάστε τον παρακάτω κώδικα HTML.
Ο παρακάτω κώδικας WebDriver έχει πρόσβαση και στους δύο αυτούς συνδέσμους χρησιμοποιώντας τη μέθοδο By.partialLinkText().
Code:
import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; public class MyClass { public static void main(String[] args) { String baseUrl = "https://demo.guru99.com/test/block.html"; System.setProperty("webdriver.chrome.driver","G:\\chromedriver.exe"); WebDriver driver = new ChromeDriver(); driver.get(baseUrl); driver.findElement(By.partialLinkText("Inside")).click(); System.out.println(driver.getTitle()); driver.navigate().back(); driver.findElement(By.partialLinkText("Outside")).click(); System.out.println(driver.getTitle()); driver.quit(); } }
Η παραπάνω έξοδος επιβεβαιώνει ότι έγινε επιτυχής πρόσβαση και στους δύο συνδέσμους επειδή οι αντίστοιχοι τίτλοι σελίδων τους ανακτήθηκαν σωστά.



.png)
.png)

.png)
.png)
.png)
.png)
.png)

.png)
.png)
.png)
.png)
.png)