Oi Jonas,
vamos por partes, já que são muitas questões:
Como posso validar gráficos com o selenium?
Você está usando uma biblioteca para criar esses gráficos que precisam de validação? Se sim, a única coisa que precisamos mesmo verificar é se estamos mandando os dados corretos para a biblioteca.
Para fazer isso, é mais comum usarmos alguma ferramenta de testes de unidade/integração e validar a saída dos dados no programa, em vez de usar o Selenium para validar a tela em si.
É possível verificar os valores dos campos de uma tabela, de acordo com suas colunas? Verificar se as colunas estão na ordem correta e que cada campo pertence àquela respectiva coluna?
Sim, e usamos muito isso. Basta usar o driver para pegar a tabela e, a partir dela, pegar as linhas da tabela. Então, para cada linha, pegamos os valores e comparamos com os esperados.
Por exemplo, digamos que você tenha uma tabela que mostra Produtos por ordem de preço e há três itens no banco:
- Ioiô a R$35;
- Pião a R$50;
- Malabares a R$25.
Nesse caso, você já sabe que, na linha 1, quer pegar os malabares, na 2, o ioiô e, na 3, o pião. Então, queremos escrever algo assim:
@Test
public void produtosSaoMostradosEmOrdemCrescenteDeValor() {
// cria os produtos no banco;
// acessa a página da listagem;
Assert.assertTrue(produtoEstaNaPosicaoDaTabela(malabares, 25);
Assert.assertTrue(produtoEstaNaPosicaoDaTabela(ioio, 35);
Assert.assertTrue(produtoEstaNaPosicaoDaTabela(piao, 50);
}
E aí, no page object que você criou, vai a implementação disso. Algo como (não testei e escrevi sem IDE):
public void produtoEstaNaPosicaoDaTabela(Produto produtoProcurado, int indice) {
WebElement tabela = driver.findElement(By.id("tabelaProdutos"));
List<WebElement> linhas = tabela.findElements(By.tagName("tr"));
WebElement linha = linhas.get(indice);
List<WebElement> celulas = linha.findElements(By.tagName("td");
return celulas.get(0) == produtoProcurado.getNome() &&
celulas.get(1) == produtoProcurado.getPrecoFormatado();
}
Quando tenho vários níveis diferentes de usuários, como devo proceder?
Você pode criar os usuários de diferentes papéis e verificar acesso ou proibição do que achar relevante. Só vai mudar o código do setUp
para isso.
E se ao invés de níveis de usuários, estes tivessem seus menus de acesso liberados na hora de seus cadastros?
Mesma ideia. Aí dá pra pegar apenas por visibilidade dos campos. :-)
Ceci