Selenium webdriver:如何使用JavaScripts获取嵌入的图像数据?

时间:2015-02-14 23:55:45

标签: java javascript selenium selenium-webdriver

我必须从下面提到的html获取src,请让我知道如何获取嵌入的图像数据?这有可能使用JS吗?如果有任何方法可以显示隐藏元素?我正在使用Selenium Web驱动程序和Java。

<div id="sc859" class="atv4 alc sc-view c-image sc-hidden" style="left: 0px; right: 0px; top: 0px; bottom: 0px">
    <img style="height: 100%; width: 100%;" src="data:image/gif;base64,R0lGODlhAQABAJAAAP///wAAACH5BAUQAAAALAAAAAABAAEAAAICBAEAOw==" class="alc-img"/>
</div>

我的代码:

JavascriptExecutor jse = (JavascriptExecutor)driver; 
WebElement element = driver.findElement(By.cssSelector("#sc859")); 
String imgeJs = (String) jse.executeScript("document.getElementsById('sc859')[0].getAttribute('src');", element);
System.out.println(imgeJs);

4 个答案:

答案 0 :(得分:0)

试试这个:

WebElement div = driver.findElement(By.id("sc859"));
String image =  div.findElement(By.className("alc-img")).getAttribute("src");

System.out.println(image);

答案 1 :(得分:0)

我之前从未使用document.getElementsById('sc859')[0].getAttribute('src');"。我总是直接执行脚本,如下所示。希望这是你想要的。并且,src上不存在div,而不是img代码,因此您的选择器出错了。

String src = (String) ((JavascriptExecutor)driver).executeScript("return document.querySelector(\"#sc859>img\").getAttribute(\"src\");");

System.out.println(src);

打印

data:image/gif;base64,R0lGODlhAQABAJAAAP///wAAACH5BAUQAAAALAAAAAABAAEAAAICBAEAOw==

答案 2 :(得分:0)

不需要使用JavaScript,也可以缩短Francesco的答案:

String src = driver.findElement(By.cssSelector("#sc859 > img.alc-img")).getAttribute("src");

答案 3 :(得分:0)

你做错了3件事 -

1 - getElementsById getElementById只返回单个元素而不是它的集合。据我所知,没有方法getElementsById。

2 - 您在executeScript方法中缺少 return

3 - 没有src属性附加到已传递其id的div元素。 src仅附加到img属性。

所以最后你的代码应该是这样的:

String imgeJs = jse.executeScript("return document.getElementById('sc859').childNodes[1].getAttribute('src')").toString();

或者您也可以通过以下方式实现:

WebElement element = driver.findElement(By.cssSelector("#sc859" > img.alc-img));
String imgeJs = jse.executeScript("return arguments[0].getAttribute('src')", element).toString();

或者按照其余的答案,您可以通过WebElement界面的element.getAttribute("src")方法完成它。