Testo di collegamento e testo di collegamento parziale 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()

Codice:

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 riportato di seguito, verrai comunque indirizzato a Google.

Testo collegamento parziale inserito Selenium – By.partialLinkText()

Codice:

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() e di 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 collegamenti contengano la sequenza di caratteri "egis", uno è il metodo "By.partialLinkText()" che accederà a questi due collegamenti separatamente a seconda delle maiuscole dei caratteri. Vedere il codice di esempio riportato di seguito.

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

Codice:

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.

Sommario

  • È possibile accedere ai collegamenti utilizzando il metodo click().
  • Oltre ai localizzatori disponibili per qualsiasi WebElement, i collegamenti dispongono anche di localizzatori basati sul testo del collegamento:
    • Per.linkText() – individua i collegamenti in base alla corrispondenza esatta del testo del collegamento fornito come parametro.
    • By.partialLinkText() – individua i collegamenti in base alla corrispondenza testuale parziale del testo del collegamento.
  • Entrambi i localizzatori sopra indicati fanno distinzione tra maiuscole e minuscole.
  • Se sono presenti più corrispondenze, By.linkText() e By.partialLinkText() selezioneranno solo la prima corrispondenza. In questi casi in cui sono presenti più collegamenti con lo stesso testo di collegamento, vengono utilizzati altri localizzatori basati su xpath e CSS.
  • Il metodo findElements() & By.tagName(“a”) trova tutti gli elementi nella pagina che corrispondono ai criteri di localizzazione
  • È possibile accedere ai collegamenti tramite By.linkText() e By.partialLinkText() sia che si trovino all'interno o all'esterno di elementi a livello di blocco.