Testo del collegamento e testo parziale del collegamento in Selenium

⚡ Riepilogo intelligente

Testo del collegamento e testo parziale del collegamento in Selenium Individua i collegamenti ipertestuali su una pagina web tramite il loro testo di ancoraggio. Il metodo By.linkText() corrisponde al testo esatto, mentre By.partialLinkText() corrisponde a una parte; entrambi i localizzatori distinguono tra maiuscole e minuscole e restituiscono la prima corrispondenza.

  • 🔗 Definizione del testo del collegamento: Individua i collegamenti ipertestuali su una pagina tramite il testo di ancoraggio visibile.
  • 🎯 By.linkText(): Trova la corrispondenza esatta con il testo del link e restituisce il primo risultato corrispondente.
  • 🔎 Tramite partialLinkText(): Corrisponde a una porzione del testo del link, restituendo anche la prima corrispondenza.
  • 🔠 Maiuscole e minuscole: Entrambi i localizzatori considerano la maiuscola come significativa, quindi "egis" e "EGIS" sono diversi.
  • 🧱 Collegamenti multipli/a blocchi: Per i duplicati, utilizzare xpath o cssSelector; entrambi i metodi funzionano sia all'interno che all'esterno dei tag di blocco.

Testo del collegamento e testo parziale del collegamento in Selenium

Che cos'è il testo del collegamento Selenium?

A Collega testo in Selenium viene utilizzato per identificare i collegamenti ipertestuali su una pagina web. Viene determinato con l'aiuto di un tag di ancoraggio. Per creare i collegamenti ipertestuali su una pagina web, possiamo utilizzare un tag di ancoraggio seguito dal collegamento Testo.

Collegamenti che corrispondono a un criterio

È possibile accedere ai collegamenti utilizzando una corrispondenza esatta o parziale del testo del collegamento. Gli esempi seguenti forniscono scenari in cui potrebbero esistere più corrispondenze e spiegano come WebDriver le gestirebbe.

In questo tutorial impareremo i metodi disponibili per trovare e accedere ai collegamenti utilizzando Webdriver. Inoltre, discuteremo alcuni dei problemi comuni incontrati durante l'accesso ai collegamenti e discuteremo ulteriormente su come risolverli.

Completa il testo del collegamento in Selenium – Da.linkText()

L'accesso ai collegamenti utilizzando il testo esatto del collegamento avviene tramite il metodo By.linkText(). Tuttavia, se sono presenti due collegamenti con lo stesso testo di collegamento, questo metodo accederà solo al primo. Considera il codice HTML riportato di seguito

Collega testo in ingresso Selenium–By.LinkText()

Collega testo in ingresso Selenium–By.LinkText()

Quando provi a eseguire il codice WebDriver riportato di seguito, accederai al primo collegamento "fai clic qui".

Collega testo in ingresso 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();
    }

}

Ecco come funziona-

Collega testo in ingresso Selenium–By.LinkText()

Di conseguenza, verrai automaticamente indirizzato a Google.

Collega testo in ingresso Selenium–By.LinkText()

Completa il testo del collegamento parziale in Selenium – By.partialLinkText()

L'accesso ai collegamenti utilizzando una parte del testo del collegamento viene effettuato utilizzando il file By.partialLinkText() metodo. Se specifichi un testo di collegamento parziale che presenta più corrispondenze, si accederà solo alla prima corrispondenza. Considera il codice HTML riportato di seguito.

Testo collegamento parziale inserito Selenium – By.partialLinkText()

 Testo collegamento parziale inserito Selenium – By.partialLinkText()

Quando esegui il codice WebDriver qui sotto, verrai comunque indirizzato a Google.

 Testo collegamento parziale inserito 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();
    }
}

Testo collegamento parziale inserito Selenium – By.partialLinkText()

Come ottenere più collegamenti con lo stesso testo del collegamento

Quindi, come aggirare il problema di cui sopra? Nei casi in cui sono presenti più collegamenti con lo stesso testo di collegamento e desideriamo accedere a collegamenti diversi dal primo, come procedere?

In questi casi, generalmente, vengono utilizzati localizzatori diversi, vale a dire By.xpath(), By.cssSelector() o By.tagName().

Il più comunemente usato è By.xpath(). È il più affidabile ma sembra complesso e anche illeggibile.

Distinzione tra maiuscole e minuscole per il testo del collegamento

Sensibilità tra maiuscole e minuscole per il testo del collegamento

I parametri per Per.linkText() and By.partialLinkText() sono entrambi sensibili alle maiuscole, il che significa che le maiuscole sono importanti. Ad esempio, nel Mercury Nella home page di Tours, ci sono due collegamenti che contengono il testo "egis": uno è il collegamento "REGISTRATI" che si trova nel menu in alto e l'altro è il collegamento "Registrati qui" che si trova nella parte in basso a destra della pagina.

Sensibilità tra maiuscole e minuscole per il testo del collegamento

Sebbene entrambi i link contengano la sequenza di caratteri "egis", il metodo "By.partialLinkText()" accederà a questi due link separatamente a seconda che i caratteri siano maiuscoli o minuscoli. Vedi il codice di esempio qui sotto.

Sensibilità tra maiuscole e minuscole per il testo del collegamento

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

    }

Collegamenti all'esterno e all'interno di un blocco

L'ultimo standard HTML5 consente di posizionare i tag all'interno e all'esterno di tag a livello di blocco come , o . I metodi “By.linkText()” e “By.partialLinkText()” possono accedere a un collegamento situato all'esterno e all'interno di questi elementi a livello di blocco. Considera il codice HTML riportato di seguito.

Collegamenti all'esterno e all'interno di un blocco

Collegamenti all'esterno e all'interno di un blocco

Il codice WebDriver riportato di seguito accede a entrambi questi collegamenti utilizzando il metodo By.partialLinkText().

Collegamenti all'esterno e all'interno di un blocco

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

L'output sopra conferma che è stato effettuato l'accesso a entrambi i collegamenti perché i rispettivi titoli di pagina sono stati recuperati correttamente.

DOMANDE FREQUENTI

By.linkText() corrisponde al testo visibile completo ed esatto di un link, mentre By.partialLinkText() corrisponde a qualsiasi link contenente una determinata sottostringa. Entrambi restituiscono solo il primo link corrispondente quando più link soddisfano i requisiti.

Sì. Sia By.linkText() che By.partialLinkText() distinguono tra maiuscole e minuscole, quindi la distinzione tra maiuscole e minuscole è importante. Il testo "egis" e "EGIS" vengono trattati come valori diversi e possono corrispondere a link diversi sulla stessa pagina.

Poiché i localizzatori di testo dei link restituiscono solo la prima corrispondenza, usa By.xpath() o By.cssSelector() per selezionare un link specifico, oppure usa findElements() con By.tagName("a") per raccogliere tutti i link e scegliere quello desiderato.

Gli strumenti di intelligenza artificiale analizzano il DOM e classificano gli attributi in base alla stabilità per suggerire selettori XPath o CSS robusti. Privilegiano identificatori univoci e meno fragili, riducendo gli errori causati da piccole modifiche all'interfaccia utente durante l'esecuzione dei test.

Sì. I framework di test auto-riparanti utilizzano l'IA per rilevare quando un localizzatore fallisce, quindi valutano gli elementi vicini in base alla somiglianza e passano automaticamente alla corrispondenza più vicina, mantenendoping test eseguiti con minore manutenzione manuale.

Riassumi questo post con: