Selênio - localizadores

A localização de elementos no Selenium WebDriver é realizada com a ajuda dos métodos findElement () e findElements () fornecidos pela classe WebDriver e WebElement.

  • findElement () retorna um objeto WebElement com base em um critério de pesquisa especificado ou acaba lançando uma exceção se não encontrar nenhum elemento que corresponda aos critérios de pesquisa.

  • findElements () retorna uma lista de WebElements que correspondem aos critérios de pesquisa. Se nenhum elemento for encontrado, ele retorna uma lista vazia.

A tabela a seguir lista toda a sintaxe Java para localizar elementos no Selenium WebDriver.

Método Sintaxe Descrição
Por ID driver.findElement (By.id (<ID do elemento>)) Localiza um elemento usando o atributo ID
Por nome driver.findElement (By.name (<nome do elemento>)) Localiza um elemento usando o atributo Name
Por nome de classe driver.findElement (By.className (<element class>)) Localiza um elemento usando o atributo Class
Por nome de tag driver.findElement (By.tagName (<htmltagname>)) Localiza um elemento usando a tag HTML
Por texto do link driver.findElement (By.linkText (<linktext>)) Localiza um link usando o texto do link
Por texto de link parcial driver.findElement (By.partialLinkText (<linktext>)) Localiza um link usando o texto parcial do link
Por CSS driver.findElement (By.cssSelector (<seletor css>)) Localiza um elemento usando o seletor CSS
Por XPath driver.findElement (By.xpath (<xpath>)) Localiza um elemento usando consulta XPath

Uso de localizadores

Agora vamos entender o uso prático de cada um dos métodos localizadores com a ajuda de https://www.calculator.net

Por ID

Aqui, um objeto é acessado com a ajuda de IDs. Nesse caso, é o ID da caixa de texto. Os valores são inseridos na caixa de texto usando o método sendkeys com a ajuda de ID (cdensity).

driver.findElement(By.id("cdensity")).sendKeys("10");

Por nome

Aqui, um objeto é acessado com a ajuda de nomes. Nesse caso, é o nome da caixa de texto. Os valores são inseridos na caixa de texto usando o método sendkeys com a ajuda de ID (cdensity).

driver.findElement(By.name("cdensity")).sendKeys("10");

Por nome de classe

Aqui, um objeto é acessado com a ajuda de Class Names. Nesse caso, é o nome da classe do WebElement. O valor pode ser acessado com a ajuda do método gettext.

List<WebElement> byclass = driver.findElements(By.className("smalltext smtb"));

Por nome de tag

O nome da tag DOM de um elemento pode ser usado para localizar esse elemento específico no WebDriver. É muito fácil lidar com tabelas com a ajuda deste método. Dê uma olhada no código a seguir.

WebElement table = driver.findElement(By.id("calctable"));
List<WebElement> row = table.findElements(By.tagName("tr"));
int rowcount = row.size();

Por Texto de Link

Este método ajuda a localizar um elemento de link com texto visível correspondente.

driver.findElements(By.linkText("Volume")).click();

Por texto de link parcial

Este método ajuda a localizar um elemento de link com texto visível de correspondência parcial.

driver.findElement(By.partialLinkText("Volume")).click();

Por CSS

O CSS é usado como um método para identificar o objeto da web, entretanto, nem todos os navegadores suportam a identificação CSS.

WebElement loginButton = driver.findElement(By.cssSelector("input.login"));

Por XPath

XPath significa linguagem de caminho XML. É uma linguagem de consulta para selecionar nós de um documento XML. XPath é baseado na representação em árvore de documentos XML e fornece a habilidade de navegar pela árvore selecionando nós usando uma variedade de critérios.

driver.findElement(By.xpath(".//*[@id = 'content']/table[1]/tbody/tr/td/table/tbody/tr[2]/td[1]/input")).sendkeys("100");