Разница между проверкой отображения изображения и его загрузкой на веб-странице?

Меня попросили проверить, загружено ли фоновое изображение на веб-страницу, но я действительно не понимаю разницы между загружаемым и отображаемым изображением. Есть? Если да, то как кодировать этот тест в селеновой Java?

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

Код:

<div class="_1WvEu" style="background-image: url(&quot;/resources/defaults/news_3.0/icons/weather/wi-67.svg&quot;);"><p class="_1DlTY"> Now </p><p class="_1Q1wt _1L3iW">62</p></div>

Утверждение 1:

assertTrue(thePageFactory.getAudHomePage(this).WeatherTopNavContainer.findElement(By.xpath("div[1]")).getAttribute("style").contains("/resources/defaults/news_3.0/icons/weather/wi-67.svg"),"File does not match for widget #1");

Утверждение 2:

?


person Rainier    schedule 26.10.2018    source источник


Ответы (3)


Убедитесь, что только URL-адрес не найдет проблему с загрузкой изображения. Если изображение недоступно или изображение отсутствует на сервере, это не приведет к сбою в этом случае.

Если это тег изображения, мы можем проверить его высоту, чтобы проверить, загружен он или нет. Поскольку это фоновое изображение, мы также не можем использовать здесь этот критерий.

Но с помощью javascript вы можете проверить, загружает ли URL-адрес изображения изображение или нет. Это даст вам дополнительную проверку того, что ваше изображение загружено.

class image_loaded(object):
  javascript= """var image = document.createElement('img');
   image.src = getBgUrl(document.getElementById('test-bg'));
   image.onload = function () {
     return true
   }; ."""
  def __init__(self, locator):
    self.url= url

  def __call__(self, driver):
    return  driver.execute_async_script(javascript,)


wait = WebDriverWait(driver, 60)
# get extract the image url from the style attribute with string manipulation
element = wait.until(image_loaded("the image url present in background"))
person Navarasu    schedule 26.10.2018

Чтобы убедиться, что изображение загружено или нет, используйте приведенный ниже код.

Он проверит статус HTTP любого URL-адреса.

Вы можете указать URL-адрес, указанный в свойстве стиля фонового изображения, или URL-адрес, указанный в атрибуте href тега IMG.

HttpClient client = new DefaultHttpClient();
HttpGet request1 = new HttpGet("provide-url-here");
HttpResponse response1 = client.execute(request1);
int code = response1.getStatusLine().getStatusCode();

Если статус HTTP (значение кода переменной в приведенном выше фрагменте кода) равен 2×× (в большинстве случаев 200), это означает, что URL-адрес работает нормально, а изображение загружается правильно.

person Mitul Lakhani    schedule 27.10.2018

Несомненно, существует разница между двумя состояниями изображения: загружается и отображается.

На самом деле загружается не только изображение, но и вся веб-страница (т. е. объект страницы).

Вы можете найти соответствующее подробное обсуждение в Есть ли у нас какие-либо общие функции для проверки того, полностью ли загружена страница в Selenium

отображается()

isDisplayed() проверяет, отображается ли элемент или нет. Этот метод позволяет избежать проблемы с анализом атрибута style элемента и определяется как:

boolean isDisplayed()
Is this element displayed or not? This method avoids the problem of having to parse an element's "style" attribute.

Returns:
Whether or not the element is displayed

Этот вариант использования

В соответствии с HTML кажется, что элемент является элементом React, поэтому, прежде чем утверждать, вам нужно искать элемент, вызывающий WebDriverWait следующим образом:

WebElement element = new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfElementLocated(By.xpath("div[1]")));
person DebanjanB    schedule 27.10.2018