我被要求验证背景图像是否已加载到网页,但我不太明白正在加载的图像与显示的图像之间的区别。有没有?如果是这样,如何在 selenium java 中编写此测试代码?
下面是我试图断言的代码,首先检查网址是否包含我期望的文件,然后检查我不知道如何验证的部分,检查文件是否加载到网页上。
代码:
<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"))
关于java - 验证图像是否显示与网页上加载之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53015317/