使用Selenium Python API确认图像加载的选择器
我想找个方法来确认图片确实加载完成了。也许可以用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上测试,所以没有phantom或IE的限制,如果有想法涉及到JavaScript或相关的想法,可能会有环境限制。
1 个回答
0
我对selenium不是很熟悉,不过我会试试看。
如果你想检查一张图片是否加载完成,我建议你使用一个布尔值。可以把这个布尔值,比如叫它'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; });");