Texto del enlace y texto parcial del enlace en Selenium

⚡ Resumen inteligente

Texto del enlace y texto parcial del enlace en Selenium Localiza hipervínculos en una página web mediante su texto de anclaje. El método By.linkText() coincide con el texto exacto, mientras que By.partialLinkText() coincide con una parte. Ambos métodos distinguen entre mayúsculas y minúsculas y devuelven la primera coincidencia.

  • 🔗 Texto del enlace definido: Localiza los hipervínculos en una página mediante su texto de anclaje visible.
  • 🎯 Por.linkText(): Busca la coincidencia exacta con el texto del enlace y devuelve la primera coincidencia.
  • 🔎 Por.partialLinkText(): Busca una coincidencia en una parte del texto del enlace y devuelve la primera coincidencia.
  • 🔠 Distingue mayúsculas y minúsculas: Ambos sistemas de localización consideran que el uso de mayúsculas es importante, por lo que "egis" y "EGIS" difieren.
  • 🧱 Enlaces múltiples/en bloque: Para detectar duplicados, utilice xpath o cssSelector; ambos métodos funcionan tanto dentro como fuera de las etiquetas de bloque.

Texto del enlace y texto parcial del enlace en Selenium

¿Qué es el texto del enlace? Selenium?

A Enlace de texto en Selenium Se utiliza para identificar los hipervínculos en una página web. Se determina con la ayuda de una etiqueta de anclaje. Para crear hipervínculos en una página web, podemos utilizar una etiqueta de anclaje seguida del texto del enlace.

Enlaces que coinciden con un criterio

Se puede acceder a los enlaces utilizando una coincidencia exacta o parcial del texto del enlace. Los siguientes ejemplos proporcionan escenarios en los que existirían múltiples coincidencias y explicarían cómo WebDriver las manejaría.

En este tutorial, aprenderemos los métodos disponibles para buscar y acceder a los enlaces utilizando Webdriver. Además, discutiremos algunos de los problemas comunes que enfrentan al acceder a los enlaces y discutiremos más a fondo cómo resolverlos.

Texto completo del enlace en Selenium – Por.linkText()

El acceso a los enlaces utilizando su texto de enlace exacto se realiza mediante el método By.linkText(). Sin embargo, si hay dos enlaces que tienen el mismo texto, este método sólo accederá al primero. Considere el código HTML a continuación

Vincular texto en Selenium–Por.LinkText()

Vincular texto en Selenium–Por.LinkText()

Cuando intente ejecutar el código WebDriver a continuación, accederá al primer enlace "haga clic aquí"

Vincular texto en Selenium–Por.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();
    }

}

Así es como funciona-

Vincular texto en Selenium–Por.LinkText()

Como resultado, serás llevado automáticamente a Google.

Vincular texto en Selenium–Por.LinkText()

Complete el texto del enlace parcial en Selenium – Por.partialLinkText()

El acceso a los enlaces utilizando una parte del texto del enlace se realiza utilizando el Por.partialLinkText() método. Si especifica un texto de enlace parcial que tiene varias coincidencias, solo se accederá a la primera coincidencia. Considere el código HTML a continuación.

Texto de enlace parcial en Selenium – Por.partialLinkText()

 Texto de enlace parcial en Selenium – Por.partialLinkText()

Cuando ejecute el código WebDriver a continuación, seguirá siendo redirigido a Google.

 Texto de enlace parcial en Selenium – Por.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();
    }
}

Texto de enlace parcial en Selenium – Por.partialLinkText()

Cómo obtener múltiples enlaces con el mismo texto de enlace

Entonces, ¿cómo solucionar el problema anterior? En los casos en los que hay varios enlaces con el mismo texto y queremos acceder a otros enlaces además del primero, ¿cómo lo hacemos?

En tales casos, generalmente se utilizan localizadores diferentes, a saber: By.xpath(), By.cssSelector() o By.tagName().

El método más utilizado es By.xpath(). Es el más confiable, pero también parece complejo y difícil de leer.

Sensibilidad entre mayúsculas y minúsculas para el texto del enlace

Sensibilidad entre mayúsculas y minúsculas para el texto del enlace

Los parámetros para Por.linkText() y Por.partialLinkText() Ambos distinguen entre mayúsculas y minúsculas, lo que significa que las mayúsculas son importantes. Por ejemplo, en Mercury En la página de inicio de Tours, hay dos enlaces que contienen el texto "egis": uno es el enlace "REGISTRARSE" que se encuentra en el menú superior y el otro es el enlace "Regístrese aquí" que se encuentra en la parte inferior derecha de la página.

Sensibilidad entre mayúsculas y minúsculas para el texto del enlace

Aunque ambos enlaces contienen la secuencia de caracteres “egis”, el método “By.partialLinkText()” accederá a estos dos enlaces por separado, dependiendo de si los caracteres están en mayúsculas o minúsculas. Consulte el código de ejemplo a continuación.

Sensibilidad entre mayúsculas y minúsculas para el texto del enlace

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

    }

Enlaces fuera y dentro de un bloque

El último estándar HTML5 permite que las etiquetas se coloquen dentro y fuera de etiquetas a nivel de bloque como , o . Los métodos “By.linkText()” y “By.partialLinkText()” pueden acceder a un enlace ubicado fuera y dentro de estos elementos a nivel de bloque. Considere el código HTML a continuación.

Enlaces fuera y dentro de un bloque

Enlaces fuera y dentro de un bloque

El siguiente código WebDriver accede a ambos enlaces utilizando el método By.partialLinkText().

Enlaces fuera y dentro de un bloque

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

El resultado anterior confirma que se accedió correctamente a ambos enlaces porque los títulos de sus respectivas páginas se recuperaron correctamente.

Preguntas Frecuentes

By.linkText() coincide con el texto visible completo y exacto de un enlace, mientras que By.partialLinkText() coincide con cualquier enlace que contenga una subcadena determinada. Ambas funciones devuelven solo el primer enlace que coincide cuando hay varios enlaces que cumplen los requisitos.

Sí. Tanto By.linkText() como By.partialLinkText() distinguen entre mayúsculas y minúsculas, por lo que el uso de mayúsculas es importante. Los textos “egis” y “EGIS” se tratan como valores diferentes y pueden coincidir con distintos enlaces en la misma página.

Dado que los localizadores de texto de enlaces solo devuelven la primera coincidencia, utilice By.xpath() o By.cssSelector() para seleccionar un enlace específico, o utilice findElements() con By.tagName(“a”) para recopilar todos los enlaces y elegir el que necesite.

Las herramientas de IA analizan el DOM y clasifican los atributos según su estabilidad para sugerir selectores XPath o CSS robustos. Priorizan los identificadores únicos y menos frágiles, lo que reduce los fallos causados ​​por pequeños cambios en la interfaz de usuario durante la ejecución de las pruebas.

Sí. Los marcos de prueba de autorreparación utilizan IA para detectar cuándo falla un localizador, luego califican los elementos cercanos por similitud y cambian automáticamente a la coincidencia más cercana, manteniendoping Las pruebas se ejecutan con menos mantenimiento manual.

Resumir este post con: