Texte du lien et texte partiel du lien dans Selenium

โšก Rรฉsumรฉ intelligent

Texte du lien et texte partiel du lien dans Selenium Localisez les liens hypertextes sur une page web grรขce ร  leur texte d'ancrage. La mรฉthode By.linkText() recherche le texte exact, tandis que By.partialLinkText() recherche une partie du texte. Ces deux mรฉthodes sont sensibles ร  la casse et renvoient la premiรจre occurrence.

  • ๐Ÿ”— Texte du lien dรฉfini : Permet de localiser les liens hypertextes sur une page grรขce ร  leur texte d'ancrage visible.
  • (I.e. Par linkText() : Recherche le texte exact du lien et renvoie la premiรจre occurrence.
  • ???? Par.partialLinkText() : Recherche une partie du texte du lien et renvoie รฉgalement la premiรจre occurrence.
  • (I.e. Sensible aux majuscules et minuscules: Les deux localisateurs considรจrent la capitalisation comme significative, donc ยซ egis ยป et ยซ EGIS ยป diffรจrent.
  • ๐Ÿงฑ Liens multiples/bloquรฉs : Pour les doublons, utilisez xpath ou cssSelector ; les deux mรฉthodes fonctionnent ร  lโ€™intรฉrieur ou ร  lโ€™extรฉrieur des balises de bloc.

Texte du lien et texte partiel du lien dans Selenium

Qu'est-ce que le texte du lien Selenium?

A Lier le texte dans Selenium est utilisรฉ pour identifier les hyperliens sur une page Web. Il est dรฉterminรฉ ร  l'aide d'une balise d'ancrage. Pour crรฉer les hyperliens sur une page Web, nous pouvons utiliser une balise d'ancrage suivie du lien Texte.

Liens correspondant ร  un critรจre

Les liens sont accessibles en utilisant une correspondance exacte ou partielle du texte de leur lien. Les exemples ci-dessous fournissent des scรฉnarios dans lesquels plusieurs correspondances existeraient et expliqueraient comment WebDriver les traiterait.

Dans ce didacticiel, nous apprendrons les mรฉthodes disponibles pour rechercher et accรฉder aux liens ร  l'aide de Webdriver. Nous discuterons รฉgalement de certains des problรจmes courants rencontrรฉs lors de lโ€™accรจs aux liens et discuterons plus en dรฉtail de la maniรจre de les rรฉsoudre.

Complรฉter le texte du lien dans Selenium โ€“ Par.linkText()

L'accรจs aux liens en utilisant leur texte exact se fait via la mรฉthode By.linkText(). Cependant, sโ€™il existe deux liens contenant exactement le mรชme texte de lien, cette mรฉthode nโ€™accรฉdera quโ€™au premier. Considรฉrez le code HTML ci-dessous

Lier le texte dans Seleniumโ€“Par.LinkText()

Lier le texte dans Seleniumโ€“Par.LinkText()

Lorsque vous essayez d'exรฉcuter le code WebDriver ci-dessous, vous accรฉderez au premier lien ยซ cliquez ici ยป

Lier le texte dans Seleniumโ€“Par.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();
    }

}

Voici comment cela fonctionne-

Lier le texte dans Seleniumโ€“Par.LinkText()

Par consรฉquent, vous serez automatiquement redirigรฉ vers Google.

Lier le texte dans Seleniumโ€“Par.LinkText()

Complรฉter le texte du lien partiel dans Selenium โ€“ Par.partialLinkText()

L'accรจs aux liens en utilisant une partie de leur texte de lien se fait ร  l'aide du Par.partialLinkText() mรฉthode. Si vous spรฉcifiez un texte de lien partiel comportant plusieurs correspondances, seule la premiรจre correspondance sera accessible. Considรฉrez le code HTML ci-dessous.

Texte de lien partiel entrant Selenium โ€“ Par.partialLinkText()

 Texte de lien partiel entrant Selenium โ€“ Par.partialLinkText()

Lorsque vous exรฉcuterez le code WebDriver ci-dessous, vous serez toujours redirigรฉ vers Google.

 Texte de lien partiel entrant Selenium โ€“ Par.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();
    }
}

Texte de lien partiel entrant Selenium โ€“ Par.partialLinkText()

Comment obtenir plusieurs liens avec le mรชme texte de lien

Alors, comment contourner le problรจme ci-dessus ? Dans les cas oรน il existe plusieurs liens avec le mรชme texte de lien et que nous souhaitons accรฉder ร  des liens autres que le premier, comment procรฉder ?

Dans de tels cas, gรฉnรฉralement, diffรฉrents localisateurs, ร  savoirโ€ฆ By.xpath(), By.cssSelector() ou By.tagName(), sont utilisรฉs.

Le plus couramment utilisรฉ est By.xpath(). C'est le plus fiable mais il semble รฉgalement complexe et illisible.

Sensibilitรฉ ร  la casse pour le texte du lien

Sensibilitรฉ ร  la casse pour le texte du lien

Les paramรจtres pour Par.linkText() et Par.partialLinkText() sont tous deux sensibles ร  la casse, ce qui signifie que la capitalisation est importante. Par exemple, dans Mercury Sur la page d'accueil de Tours, il y a deux liens qui contiennent le texte ยซ egis ยป โ€“ l'un est le lien ยซ S'INSCRIRE ยป trouvรฉ dans le menu supรฉrieur, et l'autre est le lien ยซ S'inscrire ici ยป trouvรฉ dans la partie infรฉrieure droite de la page.

Sensibilitรฉ ร  la casse pour le texte du lien

Bien que les deux liens contiennent la sรฉquence de caractรจres ยซ egis ยป, la mรฉthode ยซ By.partialLinkText() ยป y accรฉdera sรฉparรฉment en fonction de la casse des caractรจres. Voir lโ€™exemple de code ci-dessous.

Sensibilitรฉ ร  la casse pour le texte du lien

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

    }

Liens ร  lโ€™extรฉrieur et ร  lโ€™intรฉrieur dโ€™un bloc

La derniรจre norme HTML5 permet aux balises d'รชtre placรฉes ร  l'intรฉrieur et ร  l'extรฉrieur des balises de niveau bloc telles que , ou . Les mรฉthodes ยซ By.linkText() ยป et ยซ By.partialLinkText() ยป peuvent accรฉder ร  un lien situรฉ ร  l'extรฉrieur et ร  l'intรฉrieur de ces รฉlรฉments de niveau bloc. Considรฉrez le code HTML ci-dessous.

Liens ร  lโ€™extรฉrieur et ร  lโ€™intรฉrieur dโ€™un bloc

Liens ร  lโ€™extรฉrieur et ร  lโ€™intรฉrieur dโ€™un bloc

Le code WebDriver ci-dessous accรจde ร  ces deux liens ร  l'aide de la mรฉthode By.partialLinkText().

Liens ร  lโ€™extรฉrieur et ร  lโ€™intรฉrieur dโ€™un bloc

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

Le rรฉsultat ci-dessus confirme que les deux liens ont รฉtรฉ consultรฉs avec succรจs car leurs titres de page respectifs ont รฉtรฉ rรฉcupรฉrรฉs correctement.

FAQ

By.linkText() renvoie le texte complet et exact visible d'un lien, tandis que By.partialLinkText() renvoie tout lien contenant une sous-chaรฎne donnรฉe. Ces deux mรฉthodes ne renvoient que le premier lien correspondant lorsqu'il y en a plusieurs.

Oui. Les fonctions By.linkText() et By.partialLinkText() sont sensibles ร  la casse ; la mise en majuscules est donc importante. Les textes ยซ egis ยป et ยซ EGIS ยป sont considรฉrรฉs comme des valeurs diffรฉrentes et peuvent correspondre ร  des liens diffรฉrents sur une mรชme page.

ร‰tant donnรฉ que les localisateurs de texte de lien ne renvoient que la premiรจre correspondance, utilisez By.xpath() ou By.cssSelector() pour cibler un lien spรฉcifique, ou utilisez findElements() avec By.tagName("a") pour collecter tous les liens et choisir celui dont vous avez besoin.

Les outils d'IA analysent le DOM et classent les attributs par stabilitรฉ afin de suggรฉrer des sรฉlecteurs XPath ou CSS robustes. Ils privilรฉgient les identifiants uniques et moins fragiles, rรฉduisant ainsi les erreurs dues ร  des modifications mineures de l'interface utilisateur lors de l'exรฉcution des tests.

Oui. Les frameworks de test auto-rรฉparateurs utilisent l'IA pour dรฉtecter les dรฉfaillances des localisateurs, puis รฉvaluent la similaritรฉ des รฉlรฉments voisins et basculent automatiquement vers la correspondance la plus proche.ping Des tests sont exรฉcutรฉs avec moins de maintenance manuelle.

Rรฉsumez cet article avec :