Przyjęta odpowiedź wymaga użycia serwera proxy z dodatkowym wywołaniem każdego obrazu w celu ustalenia, czy obrazy są uszkodzone, czy nie.
szczęście istnieje inny sposób można to zrobić tylko przy użyciu javascript (używam Ruby, ale można użyć tego samego kodu w jakikolwiek sposób executeScript
całej wiązaniami WebDriver):
images = @driver.find_elements(:tag_name => "img")
broken_images = images.reject do |image|
@driver.execute_script("return arguments[0].complete && typeof arguments[0].naturalWidth != \"undefined\" && arguments[0].naturalWidth > 0", image)
end
# broken_images now has an array of any images on the page with broken links
# and we want to ensure that it doesn't have any items
assert broken_images.empty?
Do twojego drugiego pytania, polecam po prostu zrobienie zrzutu strony i ręczne sprawdzenie, czy wynikowy zrzut ekranu ma prawidłowe obrazy. Komputery mogą wykonywać prace automatyzacji, ale ludzie muszą od czasu do czasu sprawdzać i weryfikować wyniki :)
Witam Johnbo, jedno zdjęcie o nazwie "MyImage.jpg", po raz pierwszy wykonuję skrypt testowy MyImage found. ok po pewnym czasie zmiany programisty na stronie i ten "MyImage" jest zastępowany przez inny obraz o tej samej nazwie co "MyImage" (w folderze obrazów). Teraz wykonujemy skrypt testowy MyImage found i nasz skrypt testowy przechodzi. ale w rzeczywistości jest to błąd, ponieważ w interfejsie użytkownika wyświetla się inny obraz. Dziękujemy za szybką odpowiedź. – Chetan
Jak widzę, należy zapisać obraz w pierwszym wykonaniu, aby można było go porównać w następnym czasie, ponieważ z punktu widzenia HTML strona mogłaby być dokładnie taka sama, a Selenium nie byłby w stanie znaleźć różnicy obrazów . A może możesz użyć Selenium w połączeniu z narzędziem do rozpoznawania obrazów, takim jak Sikuli Script. – Johnbo
Zgadzam się, ale wszystkie obrazy ze strony internetowej są przechowywane, a następnie porównywane, co nie jest dobre w zależności od wydajności. możemy grać z rozmiarem obrazu (tzn. możemy przechowywać rozmiar obrazu i porównywać rozmiar obrazu następnym razem). dowolny pomysł proszę zasugerować. – Chetan