Texto do link e texto do link parcial em Selenium
O que é o texto do link Selenium?
A Texto do link em Selenium é usado para identificar os hiperlinks em uma página da web. É determinado com a ajuda de uma tag âncora. Para criar hiperlinks em uma página web, podemos usar uma tag âncora seguida do texto do link.
Links que correspondem a um critério
Os links podem ser acessados usando uma correspondência exata ou parcial do texto do link. Os exemplos abaixo fornecem cenários onde existiriam múltiplas correspondências e explicariam como o WebDriver lidaria com elas.
Neste tutorial, aprenderemos os métodos disponíveis para localizar e acessar os Links usando o Webdriver. Além disso, discutiremos alguns dos problemas comuns enfrentados ao acessar links e discutiremos mais detalhadamente como resolvê-los.
Texto completo do link em Selenium – Por.linkText()
O acesso aos links usando o texto exato do link é feito através do método By.linkText(). Porém, se houver dois links com o mesmo texto do link, este método acessará apenas o primeiro. Considere o código HTML abaixo
Ao tentar executar o código WebDriver abaixo, você acessará o primeiro link “clique aqui”
Código:
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();
}
}
É assim que funciona-
Como resultado, você será automaticamente direcionado ao Google.
Texto do link parcial completo em Selenium – By.partialLinkText()
O acesso aos links usando uma parte do texto do link é feito usando o Por.partialLinkText() método. Se você especificar um texto de link parcial que tenha diversas correspondências, somente a primeira correspondência será acessada. Considere o código HTML abaixo.
Ao executar o código WebDriver abaixo, você ainda será direcionado ao Google.
Código:
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();
}
}
Como obter vários links com o mesmo texto de link
Então, como contornar o problema acima? Nos casos em que existem vários links com o mesmo texto de link e queremos acessar outros links que não o primeiro, como fazemos?
Nesses casos, geralmente, diferentes localizadores, como… By.xpath(), By.cssSelector() ou By.tagName() são usados.
O mais comumente usado é By.xpath(). É o mais confiável, mas também parece complexo e ilegível.
Sensibilidade a maiúsculas e minúsculas para texto do link
Os parâmetros para Por.linkText() com Por.partialLinkText() ambos diferenciam maiúsculas de minúsculas, o que significa que a capitalização é importante. Por exemplo, em Mercury Na página inicial da Tours, existem dois links que contêm o texto “egis” – um é o link “REGISTRO” encontrado no menu superior, e o outro é o link “Cadastre-se aqui” encontrado na parte inferior direita da página.
Embora ambos os links contenham a sequência de caracteres “egis”, um deles é o método “By.partialLinkText()” que acessará esses dois links separadamente, dependendo da capitalização dos caracteres. Veja o código de exemplo abaixo.
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();
}
Links fora e dentro de um bloco
O padrão HTML5 mais recente permite que as tags sejam colocadas dentro e fora de tags em nível de bloco, como , ou . Os métodos “By.linkText()” e “By.partialLinkText()” podem acessar um link localizado fora e dentro desses elementos de nível de bloco. Considere o código HTML abaixo.
O código WebDriver abaixo acessa esses dois links usando o método By.partialLinkText().
Código:
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();
}
}
A saída acima confirma que ambos os links foram acessados com sucesso porque seus respectivos títulos de páginas foram recuperados corretamente.
Resumo
- Os links são acessados usando o método click().
- Além dos localizadores disponíveis para qualquer WebElement, os Links também possuem localizadores baseados em texto de link:
- Por.linkText() – localiza os links com base na correspondência exata do texto do link fornecido como parâmetro.
- Por.partialLinkText() – localiza links com base na correspondência parcial do texto do link.
- Ambos os localizadores acima diferenciam maiúsculas de minúsculas.
- Se houver várias correspondências, By.linkText() e By.partialLinkText() selecionarão apenas a primeira correspondência. Nos casos em que vários links com o mesmo texto de link estão presentes, outros localizadores baseados em XPath e CSS são usados.
- O método findElements() & By.tagName(“a”) encontra todos os elementos na página que correspondem aos critérios do localizador
- Os links podem ser acessados por By.linkText() e By.partialLinkText(), estejam eles dentro ou fora de elementos de nível de bloco.


.png)
.png)

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

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