Не думаю, что первый ответ сработает. Когда я src ошибочно названный образ, он выдает ошибку 404, как и ожидалось. Однако, когда я проверяю javascript в firebug, для этого (поврежденного) изображения устанавливается .complete в значение true. Итак, это было законченное 404, но все еще сломанное изображение.
Второй ответ представляется более точным в том смысле, что он проверяет, что он завершен, а затем проверяет наличие некоторой ширины изображения.
Я сделал версию второго ответа на python, которая работает для меня. Можно немного почистить, но, надеюсь, это поможет.
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"))