Меня попросили проверить, загружено ли фоновое изображение на веб-страницу, но я действительно не понимаю разницы между загружаемым и отображаемым изображением. Здесь? Если да, то как написать код для этого теста на selenium java?
Ниже приведен код, который я пытаюсь подтвердить, сначала проверяя, что URL-адрес содержит ожидаемый файл, а затем часть, которую я не знаю, как проверить, проверяя, загружен ли файл на веб-страницу или нет.
Код:
<div class = "_1WvEu" style = "background-image: url("/resources/defaults/news_3.0/icons/weather/wi-67.svg");"><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:
?
Убедитесь, что только по 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()
проверяет, отображается элемент или нет. Этот метод позволяет избежать проблемы анализа атрибута 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]")));