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.

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
Lorsque vous essayez d'exécuter le code WebDriver ci-dessous, vous accéderez au premier lien « cliquez ici »
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-
Par conséquent, vous serez automatiquement redirigé vers Google.
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.
Lorsque vous exécuterez le code WebDriver ci-dessous, vous serez toujours redirigé vers Google.
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(); } }
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
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.
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.
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.
Le code WebDriver ci-dessous accède à ces deux liens à l'aide de la méthode By.partialLinkText().
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.


.png)
.png)

.png)
.png)
.png)
.png)
.png)

.png)
.png)
.png)
.png)
.png)