2014-03-24 59 views
0

我正在尋找一種方法來確認圖像實際加載。也許JavaScript是一種選擇?我使用的是現在WebdriverWait簡單地強制上的所有圖像,則實際src等待,然後我終於運行我的測試之後......選擇器,確認使用Selenium Python API加載的圖像

wait = WebDriverWait(driver, 10) 
... 
albums = wait.until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, ".albums .album img"))) 
     albumslength = len(albums)-1 
     while albumslength > 0: 
      wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, ('.album:nth-child('+str(albumslength)+') img[src*="album-foo"]')))) 
      albumslength -= 1 
... 

這會在某個點確認「專輯,FOO」存在於專輯中的每個專輯的<img src="http://www.album-foo/images/blah.jpg"中。但它並沒有確認圖像完成加載到視圖中。我搜索了高和低,任何人都有一個解決方案?

我在Chrome和Firefox上進行測試,所以沒有幻影或IE限制,如果這些想法成長爲包括JavaScript或可能具有環境限制的相關想法。

回答

0

我不是那麼有經驗的硒,雖然我會試試這個。 如果你想檢查圖像是否加載,我會說使用布爾值。設置這個布爾值的原始值讓我們說'loaded'爲false。

然後調用像這樣的東西,確保它在圖像加載的那一刻返回true。

Boolean loaded = false; 

WebDriver driver = new AnyDriverYouWant(); 
JavascriptExecutor js; 
if (driver instanceof JavascriptExecutor) { 
    js = (JavascriptExecutor)driver; 
} 
loaded = (Boolean)js.executeScript("image.onload(function() { return true; });"); 
+0

讓我看看我是否可以轉換爲Python。 – Shane

+0

在Python中,這應該是像wd = webdrive.anyWebDrive(); loaded = false;我認爲它有點不止於此;';'不存在,它可能更像'wd',它可能更像'wd.executeScript(「image.onload(function(){return true;});」) –

+0

.browser.executeScript()',在Python中false爲False。我仍然試圖在Python中構建它。 – Shane