2010-10-29 38 views

回答

18

我在圖像的src如預期但圖像未顯示在頁面上之前面臨類似的情況。

您可以使用JavaScriptExcecutor檢查圖像是否顯示。

使用下面的代碼 - 傳遞WebElement(圖像) -

Object result = ((JavascriptExecutor) driver).executeScript(
    "return arguments[0].complete && "+ 
    "typeof arguments[0].naturalWidth != \"undefined\" && "+ 
    "arguments[0].naturalWidth > 0", image); 

    boolean loaded = false; 
    if (result instanceof Boolean) { 
     loaded = (Boolean) result; 
     System.out.println(loaded); 
    } 

您可以驗證圖像是否做這個實際加載的網頁。

+1

謝謝,我沒有想到任何人在這幾個月後都會發布工作解決方案。我最終使用這段代碼來檢查頁面上是否存在所有圖像:var elems = document.getElementsByTagName(「img」); var allOk = true; for(var i = 0; i 0; console。 log(elems [i] .naturalWidth);} allOk;'。 – 2012-05-09 09:59:30

+0

歡迎您。很高興它解決了你的問題。 – 2012-05-30 05:09:39

+0

偉大的工作!一個注意事項:我們的開發人員有一個400px的佔位符圖像,當您滾動到它時,它們會用惰性加載的圖像進行交換。所以對我來說,最後一個測試是'arguments [0] .naturalWidth!= 400'。請諮詢您的開發人員尋求幫助。 – SiKing 2018-01-26 00:31:03

0

您當然可以檢查圖片是否出現在頁面源中,例如通過使用XPath參數。

你可以假設,因爲它在頁面源代碼中,它會顯示,但我不知道有任何方法來實際驗證它。

+0

有這種情況,當圖庫頁面生成好時,但圖像本身無效 - 例如由於圖像腳本中的異常。 – 2010-10-31 19:17:38

1

如果你願意使用TestPlan前端Selenium有幾個選項。一旦你有了圖像的URL,你可以抓住這個URL並檢查返回的標題。如果您想手動檢查數據,也可以將數據保存到文件中。或者你可以用Java編寫一個驗證器來獲取這些數據並檢查它是否實際解碼。

如果你願意嘗試一下,我會給你寫一個示例腳本。如果你願意,我甚至可以做一個快速的圖像驗證器功能。

+0

這個軟件看起來很有趣,但我肯定會使用溴前端。我們公司已經花費了一些工時來定製它,並且僅僅因爲圖像測試不可行就拋棄了這項工作。謝謝你的提示。 – 2010-11-02 12:02:41

2

如果您使用的是Java,selenium有一個名爲eval左右的方法。你給它一個JavaScript字符串,它會以字符串的形式給出結果。例如,你可以試試這個(在一行中):

var req = new XMLHttpRequest(); 
req.open('get', document.getElementById('imageid').src, false); 
req.send(null); 
req.status==200 

這應該狀態200或「假」的東西,否則返回「真」。

+0

如果圖像沒有ID,該怎麼辦?圖像有姓名和職業 - 在這種情況下該怎麼辦? – 2017-11-03 12:13:09