Selenium - проверьте, отображается ли изображение на странице

Я создаю набор тестов Selenium для приложения для веб-альбомов. Я хотел бы проверить, действительно ли изображение отображается (оно содержит действительные данные изображения). Возможно ли это?

Ответы

Ответ 1

Я столкнулся с подобной ситуацией до того, где src изображения будет таким, как ожидалось, но изображение не будет отображаться на странице.

Вы можете проверить, будет ли изображение отображаться или нет, используя JavaScriptExcecutor.

Используйте следующий код - Передайте WebElement (изображение) -

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

Вы можете проверить, действительно ли изображение загружено на веб-страницу, выполнив это.

Ответ 2

Если вы используете Java, у selenium есть метод с именем eval или так. Вы даете ему строку javascript, и она дает результат в виде строки. Например, вы можете попробовать это (в одной строке):

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

Это должно возвращать "true" для статуса 200 или "false" для чего-то еще.

Ответ 3

Если вы готовы использовать TestPlan интерфейс Selenium, вы можете выбрать несколько вариантов. Когда у вас есть URL-адрес изображения, вы можете захватить этот URL-адрес и проверить возвращенные заголовки. вы также можете сохранить данные в файл, если вы хотите его вручную осмотреть. Или вы можете написать валидатор в Java, чтобы взять эти данные и проверить, действительно ли он декодируется.

Если вы захотите попробовать, я напишу вам образец script. Я даже могу сделать быструю функцию проверки изображения, если вы хотите.

Ответ 4

Вы можете убедиться, что изображение отображается в источнике страницы, например. используя параметр XPath.

Можно предположить, что, поскольку он находится в источнике страницы, он будет отображаться, но я не знаю, как это сделать.