java - 验证图像是否显示与网页上加载之间的区别?

标签 java selenium selenium-webdriver webdriver webdriverwait

我被要求验证背景图像是否已加载到网页,但我不太明白正在加载的图像与显示的图像之间的区别。有没有?如果是这样,如何在 selenium java 中编写此测试代码?

下面是我试图断言的代码,首先检查网址是否包含我期望的文件,然后检查我不知道如何验证的部分,检查文件是否加载到网页上。

代码:

<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:

最佳答案

单独验证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/

相关文章:

用于阶乘错误输出的 Java 程序

java - Maven 配置文件不执行测试

excel - 使用 Python Selenium 下载 Excel 文件

Java - Selenium WebElement isDisplayed() 方法不可用

java - 底页 + Android MotionLayout 实现

java - 删除并重新创建文件/目录

java - 表示 DFA 的数据结构

java - 无法使用 Cucumber + Selenium Webdriver + Chrome + Capybara 测试远程 HTML/CSS/JS/Java 网站

node.js - 如何将 Selenium NodeJS Web 应用程序部署到 Heroku?

selenium-webdriver - 网络驱动程序 : SevereServiceError: Couldn't start Chromedriver: timeout Please check if port 9515 is in use