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

时间:2014-03-24 18:15:39

标签: javascript python selenium selenium-webdriver webdriver

我正在寻找确认图像实际加载的方法。也许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
...

这会在某些时候确认相册中每张专辑的<img src="http://www.album-foo/images/blah.jpg"中存在“ album-foo ”。但它并未确认图像已完成加载到视图中。我搜索过高低,有人有解决方案吗?

我正在Chrome和Firefox上进行测试,因此如果这些想法变得包含可能存在环境限制的JavaScript或相关提示,则不会出现幻像或IE限制。

1 个答案:

答案 0 :(得分: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; });");