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");