Individua elementi in base al testo del link & Testo del collegamento parziale in Selenium Webdriver

Sommario:

Anonim

Che cos'è il testo del collegamento nel selenio?

Un Link Text in Selenium viene utilizzato per identificare i collegamenti ipertestuali su una pagina web. È 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 esisterebbero più corrispondenze e spiegherebbero come WebDriver li gestirà.

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.

Ecco cosa imparerai-

  • Accesso ai collegamenti utilizzando la corrispondenza esatta del testo: By.linkText ()
  • Accesso ai collegamenti utilizzando la corrispondenza del testo parziale: By.partialLinkText ()
  • Come ottenere più collegamenti con lo stesso testo del collegamento
  • Distinzione tra maiuscole e minuscole per il testo del collegamento
  • Collegamenti all'esterno e all'interno di un blocco

Accesso ai collegamenti utilizzando la corrispondenza esatta del testo: By.linkText ()

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

Quando si tenta di eseguire il codice WebDriver di seguito, si accederà al primo collegamento "fare clic qui"

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 = "http://demo.guru99.com/test/link.html";System.setProperty ("webdriver.chrome.driver", "G: \\ chromedriver.exe");Driver WebDriver = nuovo ChromeDriver ();driver.get (baseUrl);driver.findElement (By.linkText ("clicca qui")). click ();System.out.println ("il titolo della pagina è: + driver.getTitle ());driver.quit ();}}

Ecco come funziona-

Di conseguenza, verrai automaticamente reindirizzato a Google.

Accesso ai collegamenti utilizzando la corrispondenza del testo parziale: By.partialLinkText ()

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

Quando esegui il codice WebDriver di seguito, verrai comunque reindirizzato a Google.

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 = "http://demo.guru99.com/test/accessing-link.html";System.setProperty ("webdriver.chrome.driver", "G: \\ chromedriver.exe");Driver WebDriver = nuovo ChromeDriver ();driver.get (baseUrl);driver.findElement (By.partialLinkText ("qui")). click ();System.out.println ("Il titolo della pagina è: + driver.getTitle ());driver.quit ();}}

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 si desidera accedere a collegamenti diversi dal primo, come si procede?

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 anche complesso e non leggibile.

Distinzione tra maiuscole e minuscole per il testo del collegamento

I parametri per By.linkText () e By.partialLinkText () fanno distinzione tra maiuscole e minuscole, il che significa che le maiuscole sono importanti. Ad esempio, nella home page di Mercury Tours, ci sono due link che contengono il testo "egis": uno è il link "REGISTER" che si trova nel menu in alto e l'altro è il link "Register here" che si trova nella parte in basso a destra della pagina.

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 lettere maiuscole dei caratteri. Vedere il codice di esempio di seguito.

Codice

public static void main (String [] args) {String baseUrl = "http://demo.guru99.com/test/newtours/";System.setProperty ("webdriver.chrome.driver", "G: \\ chromedriver.exe");Driver WebDriver = nuovo 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 di seguito.

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

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 = "http://demo.guru99.com/test/block.html";System.setProperty ("webdriver.chrome.driver", "G: \\ chromedriver.exe");Driver WebDriver = nuovo 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 precedente conferma che l'accesso a entrambi i collegamenti è stato eseguito correttamente perché i rispettivi titoli di pagina sono stati recuperati correttamente.

Sommario

  • Si accede ai collegamenti utilizzando il metodo click ().
  • Oltre ai localizzatori disponibili per qualsiasi WebElement, i collegamenti hanno anche localizzatori basati su testo di collegamento:
    • By.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 parziale del testo del collegamento.
  • Entrambi i localizzatori di cui sopra 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 locatori basati su xpath, CSS.
  • Il metodo findElements () & By.tagName ("a") trova tutti gli elementi nella pagina che corrispondono ai criteri del localizzatore
  • È possibile accedere ai collegamenti da By.linkText () e By.partialLinkText () sia che si trovino all'interno o all'esterno di elementi a livello di blocco.