Разница между проверкой, отображается ли изображение и загружена ли на веб-странице? - PullRequest
0 голосов
/ 26 октября 2018

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

?

Ответы [ 3 ]

0 голосов
/ 27 октября 2018

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

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

Вы можете указать URL-адрес, указанный в свойстве background-image style, или 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 Status (значение кода переменной в приведенном фрагменте кода) равно 2 × × (в большинстве случаев 200), это означает, что URL-адрес работает нормально и изображение загружается правильно

0 голосов
/ 27 октября 2018

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

Фактически, это не только изображение, но и все веб-страница (т. Е. объект страницы ), которая загружается.

Соответствующее подробное обсуждение можно найти в Есть ли у нас какая-либо общая функция, чтобы проверить, имеет ли страницаполностью загруженный в 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]")));
0 голосов
/ 27 октября 2018

Убедитесь, что путь к 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"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...