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

StackOverflow https://stackoverflow.com/questions/4052304

Вопрос

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

Это было полезно?

Решение

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

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

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

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

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

Другие советы

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

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

Это должно вернуть «True» для статуса 200 или «ложного» для чего-то другого.

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

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

Используйте эту функцию вкладыши:

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

куда:

imageWebElement = WebElement Чтобы найти изображение на странице

isImageLoaded = Результат в булеве (вернуть истину, если изображение присутствует, false, если его не)

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top