选择器,确认使用Selenium Python API加载的图像

Selector that confirms image loaded using Selenium Python API

本文关键字:API 加载 图像 Python Selenium 确认 选择器      更新时间:2023-09-26

我正在寻找一种方法来确认图像已实际加载。也许JavaScript是一个选择?我现在使用WebdriverWait来简单地强制等待所有图像,然后是实际的src,然后我最终在…

之后运行我的测试。
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
...

这将在某个时刻确认"album-foo"在相册中每个专辑的<img src="http://www.album-foo/images/blah.jpg"中存在。但它并不能确认图像已经加载到视图中。我到处都找过了,有人有办法吗?

我正在测试Chrome和Firefox,所以没有幻影或IE限制,如果想法成长为包括JavaScript或相关的想法,可能有环境限制。

我对硒没有经验,尽管我会尝试一下。如果你想检查图像是否被加载,我会说使用布尔值。设置这个布尔值的初始值,比如'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; });");