Perbedaan antara memverifikasi apakah gambar ditampilkan vs dimuat di halaman web?

Saya diminta untuk memverifikasi apakah gambar latar belakang dimuat ke halaman web, tetapi saya tidak begitu memahami perbedaan antara gambar yang dimuat vs yang ditampilkan. Disana? Jika demikian, bagaimana cara kode untuk tes ini di Selenium Java?

Di bawah ini adalah kode yang saya coba tegaskan, pertama dengan memeriksa apakah url berisi file yang saya harapkan, dan kemudian bagian saya tidak tahu cara memverifikasinya, memeriksa apakah file tersebut dimuat di halaman web atau tidak.

Kode:

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

Tegaskan 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");

Tegaskan 2:

?


person Rainier    schedule 26.10.2018    source sumber


Jawaban (3)


Verifikasi jalur url saja tidak akan menemukan masalah gambar tidak dimuat. Jika gambar tidak dapat diakses atau gambar tidak ada di server, hal ini tidak akan gagal.

Jika itu adalah tag gambar, kami dapat memverifikasi tingginya untuk memeriksa apakah itu dimuat atau tidak. Karena ini adalah gambar latar belakang, kami juga tidak dapat menggunakan kriteria tersebut di sini.

Namun dengan menggunakan javascript, Anda dapat memvalidasi apakah url gambar sedang memuat gambar atau tidak. Ini akan memberi Anda validasi tambahan agar gambar Anda dimuat.

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"))
person Navarasu    schedule 26.10.2018

Untuk memverifikasi bahwa gambar dimuat atau tidak gunakan kode di bawah ini.

Ini akan memeriksa status HTTP dari url apa pun.

Anda dapat memberikan url yang diberikan di properti gaya gambar latar atau url yang diberikan dalam atribut href pada tag IMG

HttpClient client = new DefaultHttpClient();
HttpGet request1 = new HttpGet("provide-url-here");
HttpResponse response1 = client.execute(request1);
int code = response1.getStatusLine().getStatusCode();

Jika Status HTTP (nilai kode variabel dalam cuplikan kode di atas) adalah 2×× (umumnya 200), itu berarti url berfungsi dengan baik dan gambar dimuat dengan benar

person Mitul Lakhani    schedule 27.10.2018

Tentu saja ada perbedaan antara dua keadaan gambar yang dimuat vs ditampilkan.

Sebenarnya, yang dimuat bukanlah gambarnya saja, melainkan keseluruhan halaman web (yaitu Objek Halaman).

Anda dapat menemukan diskusi mendetail yang relevan di Apakah kami memiliki fungsi umum untuk memeriksa apakah halaman telah dimuat sepenuhnya di Selenium

Ditampilkan()

isDisplayed() memvalidasi apakah elemen ditampilkan atau tidak. Metode ini menghindari masalah karena harus mengurai atribut style suatu elemen dan didefinisikan sebagai:

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

Kasus penggunaan ini

Sesuai dengan HTML, tampaknya elemen tersebut adalah elemen React jadi sebelum menyatakan, Anda perlu mencari elemen yang memicu WebDriverWait sebagai berikut:

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