Κείμενο συνδέσμου και μερικό κείμενο συνδέσμου σε Selenium

⚡ Έξυπνη Σύνοψη

Κείμενο συνδέσμου και μερικό κείμενο συνδέσμου σε Selenium Εντοπίστε υπερσυνδέσμους σε μια ιστοσελίδα μέσω του κειμένου αγκύρωσης. Η μέθοδος By.linkText() ταιριάζει με το ακριβές κείμενο, ενώ η μέθοδος By.partialLinkText() ταιριάζει με ένα τμήμα, και και οι δύο εντοπιστές κάνουν διάκριση πεζών-κεφαλαίων και επιστρέφουν την πρώτη αντιστοίχιση.

  • 🔗 Ορισμός κειμένου συνδέσμου: Εντοπίζει υπερσυνδέσμους σε μια σελίδα με βάση το ορατό κείμενο αγκύρωσης.
  • 🎯 By.linkText(): Αντιστοιχίζει το ακριβές κείμενο του συνδέσμου και επιστρέφει την πρώτη αντιστοίχιση.
  • 🔎 Από.partialLinkText(): Αντιστοιχίζει ένα τμήμα του κειμένου του συνδέσμου, επιστρέφοντας επίσης την πρώτη αντιστοίχιση.
  • 🔠 Διακρίνει πεζά-κεφαλαία: Και οι δύο εντοπιστές θεωρούν την κεφαλαιοποίηση ως σημαντική, επομένως οι όροι «egis» και «EGIS» διαφέρουν.
  • 🧱 Πολλαπλοί/Μπλοκ Σύνδεσμοι: Για διπλότυπα χρησιμοποιήστε xpath ή cssSelector. Και οι δύο μέθοδοι λειτουργούν εντός ή εκτός ετικετών μπλοκ.

Κείμενο συνδέσμου και μερικό κείμενο συνδέσμου σε Selenium

Τι είναι το Κείμενο Συνδέσμου Selenium?

A Σύνδεσμος κειμένου σε Selenium χρησιμοποιείται για την αναγνώριση των υπερσυνδέσμων σε μια ιστοσελίδα. Καθορίζεται με τη βοήθεια μιας ετικέτας αγκύρωσης. Για τη δημιουργία των υπερσυνδέσμων σε μια ιστοσελίδα, μπορούμε να χρησιμοποιήσουμε μια ετικέτα αγκύρωσης ακολουθούμενη από το σύνδεσμο Κείμενο.

Σύνδεσμοι που ταιριάζουν με ένα κριτήριο

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

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

Πλήρες κείμενο συνδέσμου σε Selenium – By.linkText()

Η πρόσβαση σε συνδέσμους χρησιμοποιώντας το ακριβές κείμενο συνδέσμου τους γίνεται μέσω της μεθόδου By.linkText().. Ωστόσο, εάν υπάρχουν δύο σύνδεσμοι που έχουν το ίδιο κείμενο συνδέσμου, αυτή η μέθοδος θα έχει πρόσβαση μόνο στον πρώτο. Εξετάστε τον παρακάτω κώδικα HTML

Σύνδεση κειμένου σε Selenium–By.LinkText()

Σύνδεση κειμένου σε Selenium–By.LinkText()

Όταν προσπαθείτε να εκτελέσετε τον κώδικα WebDriver παρακάτω, θα έχετε πρόσβαση στον πρώτο σύνδεσμο "κάντε κλικ εδώ".

Σύνδεση κειμένου σε Selenium–By.LinkText()

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();
    }

}

Εδώ είναι πώς λειτουργεί -

Σύνδεση κειμένου σε Selenium–By.LinkText()

Ως αποτέλεσμα, θα μεταφερθείτε αυτόματα στο Google.

Σύνδεση κειμένου σε Selenium–By.LinkText()

Ολοκληρώστε το κείμενο μερικού συνδέσμου σε Selenium – By.partialLinkText()

Η πρόσβαση σε συνδέσμους χρησιμοποιώντας ένα τμήμα του κειμένου συνδέσμου τους γίνεται χρησιμοποιώντας το By.partialLinkText() μέθοδος. Εάν καθορίσετε ένα μερικό κείμενο συνδέσμου που έχει πολλές αντιστοιχίσεις, θα είναι δυνατή η πρόσβαση μόνο στην πρώτη αντιστοίχιση. Εξετάστε τον παρακάτω κώδικα HTML.

Κείμενο μερικού συνδέσμου μέσα Selenium – By.partialLinkText()

 Κείμενο μερικού συνδέσμου μέσα Selenium – By.partialLinkText()

Όταν εκτελέσετε τον κώδικα WebDriver παρακάτω, θα μεταφερθείτε ακόμα στο Google.

 Κείμενο μερικού συνδέσμου μέσα Selenium – By.partialLinkText()

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();
    }
}

Κείμενο μερικού συνδέσμου μέσα Selenium – By.partialLinkText()

Πώς να αποκτήσετε πολλούς συνδέσμους με το ίδιο κείμενο συνδέσμου

Λοιπόν, πώς να ξεπεράσετε το παραπάνω πρόβλημα; Σε περιπτώσεις όπου υπάρχουν πολλοί σύνδεσμοι με το ίδιο κείμενο συνδέσμου και θέλουμε να έχουμε πρόσβαση σε άλλους συνδέσμους εκτός από τον πρώτο, πώς το κάνουμε;

Σε τέτοιες περιπτώσεις, γενικά, χρησιμοποιούνται διαφορετικοί εντοπιστές, δηλαδή… 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();
    }
}

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

Συχνές Ερωτήσεις

Η συνάρτηση By.linkText() αντιστοιχεί στο πλήρες, ακριβές ορατό κείμενο ενός συνδέσμου, ενώ η συνάρτηση By.partialLinkText() αντιστοιχεί σε οποιονδήποτε σύνδεσμο που περιέχει μια δεδομένη υποσυμβολοσειρά. Και οι δύο επιστρέφουν μόνο τον πρώτο σύνδεσμο που αντιστοιχεί όταν υπάρχουν αρκετοί σύνδεσμοι που πληρούν τις προϋποθέσεις.

Ναι. Τόσο η By.linkText() όσο και η By.partialLinkText() κάνουν διάκριση πεζών-κεφαλαίων, επομένως η χρήση κεφαλαίων έχει σημασία. Τα κείμενα "egis" και "EGIS" αντιμετωπίζονται ως διαφορετικές τιμές και μπορούν να αντιστοιχούν σε διαφορετικούς συνδέσμους στην ίδια σελίδα.

Επειδή οι εντοπιστές κειμένου συνδέσμων επιστρέφουν μόνο την πρώτη αντιστοίχιση, χρησιμοποιήστε την By.xpath() ή την By.cssSelector() για να στοχεύσετε έναν συγκεκριμένο σύνδεσμο ή χρησιμοποιήστε την findElements() με την By.tagName("a") για να συλλέξετε όλους τους συνδέσμους και να επιλέξετε αυτόν που χρειάζεστε.

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

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

Συνοψίστε αυτήν την ανάρτηση με: