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

Меня попросили проверить, загружено ли фоновое изображение на веб-страницу, но я действительно не понимаю разницы между загружаемым и отображаемым изображением. Здесь? Если да, то как написать код для этого теста на selenium 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:

?

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
0
1 020
3

Ответы 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"))

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

Он проверит статус 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-адрес работает нормально и изображение загружается правильно.

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

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

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

isDisplayed ()

Метод 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 кажется, что элемент является элементом Реагировать, поэтому перед утверждением вам необходимо найти элемент, вызывающий WebDriverWait, следующим образом:

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

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