Nie sądzę, że pierwszą reakcją będzie działać. Kiedy src jest błędnie nazwany obrazem, generuje błąd 404 zgodnie z oczekiwaniami. Jednak gdy sprawdzam javascript w firebug, ten (uszkodzony) obraz ma .complete ustawiony na true. Tak więc był to ukończony 404, ale wciąż zepsuty obraz.
Druga odpowiedź wydaje się być dokładniejsza, ponieważ sprawdza, czy jest kompletna, a następnie sprawdza, czy obraz ma jakąś szerokość.
Zrobiłem wersję pytona drugiej odpowiedzi, która działa dla mnie. Może być trochę oczyszczony, ale mam nadzieję, że to pomoże.
def checkForBrokenImages(self):
sel = self.selenium
imgCount = int(sel.get_xpath_count("//img"))
for i in range(0,imgCount):
isComplete = sel.get_eval("selenium.browserbot.getCurrentWindow().document.images[" + str(i) + "].complete")
self.assertTrue(isComplete, "Bad Img (!complete): "+sel.get_eval("selenium.browserbot.getCurrentWindow().document.images[" + str(i) + "].src"))
typeOf = sel.get_eval("typeof selenium.browserbot.getCurrentWindow().document.images[" + str(i) + "].naturalWidth")
self.assertTrue(typeOf != 'undefined', "Bad Img (w=undef): "+sel.get_eval("selenium.browserbot.getCurrentWindow().document.images[" + str(i) + "].src"))
natWidth = int(sel.get_eval("selenium.browserbot.getCurrentWindow().document.images[" + str(i) + "].naturalWidth"))
self.assertTrue(natWidth > 0, "Bad Img (w=0): "+sel.get_eval("selenium.browserbot.getCurrentWindow().document.images[" + str(i) + "].src"))
Czy tytuł tego pytania nie powinien brzmieć "Jak sprawdzić, czy adres URL załadował wszystkie obrazy na stronie internetowej za pomocą Selenium WebDriver?"? Przyjęta odpowiedź nie ma nic wspólnego z kodami odpowiedzi HTTP, a to wyklucza możliwość zadawania podobnego pytania. – 0112
Podobnego pytania (do sprawdzania kodów odpowiedzi) został zadany/odpowiedział tutaj: http://stackoverflow.com/a/14547168/1596460 – 0112