La risposta accettata richiede l'utilizzo di un proxy con una chiamata aggiuntiva a ciascuna immagine per determinare se le immagini sono interrotte o meno.
Per fortuna, c'è un altro modo è possibile farlo utilizzando solo javascript (sto usando Ruby, ma è possibile utilizzare lo stesso codice in qualsiasi metodo executeScript
attraverso le associazioni 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?
Per la tua altra domanda, ti consiglio di prendere uno screenshot della pagina e di verificare manualmente che lo screenshot risultante abbia le immagini corrette. I computer possono fare il lavoro di automazione, ma gli umani devono controllare e verificare i suoi risultati di volta in volta :)
Hi Johnbo, Un'immagine che ha il nome è "MyImage.jpg", la prima volta che eseguo il mio script di prova MyImage trovato. ok, dopo un po 'di tempo gli sviluppatori cambiano sul sito e questa "MyImage" è sostituita da un'altra immagine con lo stesso nome di "MyImage" (sulla cartella delle immagini). Ora eseguiamo lo script di test MyImage trovato e il nostro script di test pass. ma in realtà è un bug perché in UI viene visualizzata un'altra immagine. Grazie per la tua risposta veloce. – Chetan
Come ho visto, è necessario memorizzare l'immagine nella prima esecuzione in modo da poterla confrontare le volte successive, perché dal punto di vista HTML la pagina potrebbe essere esattamente la stessa e Selenium non sarebbe in grado di trovare la differenza di immagini . O forse potresti usare il selenio in combinazione con uno strumento di riconoscimento dell'immagine come Sikuli Script. – Johnbo
sono d'accordo ma tutte le immagini dalla pagina web sono archiviate e quindi confrontate, non è buono in base alle prestazioni. possiamo giocare con le dimensioni dell'immagine (ad esempio, possiamo memorizzare le dimensioni dell'immagine e confrontare la dimensione dell'immagine la prossima volta). qualsiasi idea si prega di suggerire. – Chetan