Testo di collegamento e testo di collegamento parziale in Selenium
Che cos'è il testo del collegamento Selenium?
A Collega testo in Selenium viene utilizzato per identificare i collegamenti ipertestuali su una pagina web. Viene 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 potrebbero esistere più corrispondenze e spiegano come WebDriver le gestirebbe.
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.
Completa il testo del collegamento in Selenium – Da.linkText()
L'accesso ai collegamenti utilizzando il testo esatto del collegamento avviene tramite il metodo By.linkText(). Tuttavia, se sono presenti due collegamenti con lo stesso testo di collegamento, questo metodo accederà solo al primo. Considera il codice HTML riportato di seguito
Quando provi a eseguire il codice WebDriver riportato di seguito, accederai al primo collegamento "fai 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 = "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(); } }
Ecco come funziona-
Di conseguenza, verrai automaticamente indirizzato a Google.
Completa il testo del collegamento parziale in Selenium – By.partialLinkText()
L'accesso ai collegamenti utilizzando una parte del testo del collegamento viene effettuato utilizzando il file By.partialLinkText() metodo. Se specifichi un testo di collegamento parziale che presenta più corrispondenze, si accederà solo alla prima corrispondenza. Considera il codice HTML riportato di seguito.
Quando esegui il codice WebDriver riportato di seguito, verrai comunque indirizzato 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 = "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(); } }
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 desideriamo accedere a collegamenti diversi dal primo, come procedere?
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 complesso e anche illeggibile.
Distinzione tra maiuscole e minuscole per il testo del collegamento
I parametri per Per.linkText() e di By.partialLinkText() sono entrambi sensibili alle maiuscole, il che significa che le maiuscole sono importanti. Ad esempio, nel Mercury Nella home page di Tours, ci sono due collegamenti che contengono il testo "egis": uno è il collegamento "REGISTRATI" che si trova nel menu in alto e l'altro è il collegamento "Registrati qui" 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 maiuscole dei caratteri. Vedere il codice di esempio riportato di seguito.
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(); }
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 riportato 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 = "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(); } }
L'output sopra conferma che è stato effettuato l'accesso a entrambi i collegamenti perché i rispettivi titoli di pagina sono stati recuperati correttamente.
Sommario
- È possibile accedere ai collegamenti utilizzando il metodo click().
- Oltre ai localizzatori disponibili per qualsiasi WebElement, i collegamenti dispongono anche di localizzatori basati sul testo del collegamento:
- Per.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 testuale parziale del testo del collegamento.
- Entrambi i localizzatori sopra indicati 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 localizzatori basati su xpath e CSS.
- Il metodo findElements() & By.tagName(“a”) trova tutti gli elementi nella pagina che corrispondono ai criteri di localizzazione
- È possibile accedere ai collegamenti tramite By.linkText() e By.partialLinkText() sia che si trovino all'interno o all'esterno di elementi a livello di blocco.