<p>我不能帮助使用python,但是可以为那些希望用Java做类似事情的人提供一个一般性的建议和Java代码。我的方法是</p>
<ol>
<li>获取图像的<code>src</code>属性并快速生成<code>HTTP GET</code>
打电话并确保得到<code>200 OK</code>响应。在</li>
<li>一旦完成了,你
无法使用检查WebElement的<code>naturalWidth</code>属性
Javascript。如果大于0,则渲染良好。然而,这
在IE中的工作方式不同。IE具有<code>.complete</code>属性。会的
如果渲染图像,则为true(引用<a href="http://watirmelon.com/2012/11/27/checking-an-image-is-actually-visible-using-webdriver/" rel="nofollow">here</a>)</li>
</ol>
<p>下面是Java代码示例</p>
<pre><code>@Test
public void test()
{
WebDriver driver = new FirefoxDriver();
String url = "http://www.espncricinfo.com/";
driver.get(url);
WebElement img = driver.findElement(By.cssSelector("a[title='ESPN Cricinfo']>img"));
String src = img.getAttribute("src");
Client client = Client.create();
WebResource resource = client.resource(src);
assertThat("Response code is not 200 OK", resource.get(ClientResponse.class).getStatus(), equalTo(200));
assertThat("Image is not rendered correctly", isImageVisible(driver, img),equalTo(true));
driver.quit();
}
public boolean isImageVisible(WebDriver driver, WebElement image)
{
Boolean result = null;
if (driver instanceof InternetExplorerDriver || ((RemoteWebDriver) driver).getCapabilities().getBrowserName().equals("internet explorer"))
{
result = (Boolean) ((JavascriptExecutor) driver).executeScript("return arguments[0].complete;", image);
}
else
{ //other browser types use diff method to check
result = (Boolean) ((JavascriptExecutor) driver).executeScript("return (typeof arguments[0].naturalWidth!=\"undefined\" && arguments[0].naturalWidth>0);", image);
}
return result.booleanValue();
}
}
</code></pre>