我必须从下面提到的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);
答案 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")
方法完成它。