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)