Pergunta

Estou criando um conjunto de testes de selênio para um aplicativo de álbum da web. Gostaria de testar se uma imagem é realmente exibida (ela contém dados de imagem válidos). É isso possível?

Foi útil?

Solução

Eu enfrentei essa situação semelhante antes de onde o SRC da imagem é o esperado, mas a imagem não é exibida na página.

Você pode verificar se a imagem está sendo exibida ou não usando o JavaScriptTexCecutor.

Use o seguinte código - Passe o WebElement (imagem) -

 Object result = ((JavascriptExecutor) driver).executeScript(
   "return arguments[0].complete && "+
   "typeof arguments[0].naturalWidth != \"undefined\" && "+
   "arguments[0].naturalWidth > 0", image);

    boolean loaded = false;
    if (result instanceof Boolean) {
      loaded = (Boolean) result;
      System.out.println(loaded);
    }

Você pode verificar se a imagem realmente carregou na página da web fazendo isso.

Outras dicas

Se você está usando Java, o selênio tem um método chamado eval ou então. Você fornece uma sequência JavaScript e fornece o resultado como uma string. Por exemplo, você pode tentar isso (em uma linha):

var req = new XMLHttpRequest();
req.open('get', document.getElementById('imageid').src, false);
req.send(null);
req.status==200

Isso deve retornar "verdadeiro" para o status 200 ou "false" para outra coisa.

Se você estiver disposto a usar o Plano de teste Frontend para selênio lá algumas opções. Depois de ter o URL da imagem, você pode pegar este URL e inspecionar os cabeçalhos retornados. Você também pode salvar os dados em um arquivo se quiser inspecioná -los manualmente. Ou você pode escrever um validador em Java para pegar esses dados e verificar se ele realmente decodifica.

Se você estiver disposto a experimentá -lo, escreverei um script de amostra. Eu posso até fazer uma função rápida do validador de imagem, se desejar.

Use esta função de um revestimento:

Boolean isImageLoaded = (Boolean) ((JavascriptExecutor)driver).executeScript("return arguments[0].complete && typeof arguments[0].naturalWidth != \"undefined\" && arguments[0].naturalWidth > 0", imageWebElement);

Onde:

imageWebElement = WebElement para localizar a imagem na página

isImageLoaded = Resultar em booleano (retornar true se a imagem estiver presente, falsa se não for)

Você certamente pode verificar se a imagem aparece na fonte da página, por exemplo, usando um parâmetro XPath.

Você pode assumir que, como está na fonte da página, ele será exibido, mas eu não conheço nenhuma maneira de realmente validar isso.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top