我在html页面上有一个图像也是一个输入。
public partial class Startup
{
public void Configuration(IAppBuilder app)
{
OAuthAuthorizationServerOptions oauthServerOptions = new OAuthAuthorizationServerOptions
{
//...,
Provider = new TokenBasedAuthorizationServerProvider(),
RefreshTokenProvider = new RefreshTokenProvider()
};
app.UseOAuthAuthorizationServer(oauthServerOptions);
}
我不在乎点击图片。我想将图像保存到文件。这似乎是不可能的,这似乎是荒谬的。我尝试从<input type="image" src=...
投射到HtmlImageInput
,但我发现了一个错误。我怎样才能做到这一点?我需要从HtmlUnit切换到其他东西吗?我不关心我需要做什么来完成这件事。
顺便说一句,我尝试使用selenium并截取屏幕截图,但它正在拍摄错误区域的屏幕截图。尝试了多个不同的xpath到同一个元素,它总是采取错误的截图。
答案 0 :(得分:0)
感谢报道。
与HtmlImage
类似,.saveAs(File)
只有added到HtmlImageInput
。
顺便说一句,如果你不能使用最新的快照,那么你可以使用:
try (WebClient webClient = new WebClient()) {
HtmlPage page = webClient.getPage("http://localhost:8080");
HtmlImageInput input = page.querySelector("input");
URL url = page.getFullyQualifiedUrl(input.getSrcAttribute());
final String accept = webClient.getBrowserVersion().getImgAcceptHeader();
final WebRequest request = new WebRequest(url, accept);
request.setAdditionalHeader("Referer", page.getUrl().toExternalForm());
WebResponse imageWebResponse = webClient.loadWebResponse(request);
}
答案 1 :(得分:0)
HtmlImage codeImg = (HtmlImage) findElement(xpath, index);
InputStream is = null;
byte[] data = null;
try {
is = codeImg.getWebResponse(true).getContentAsStream();
data = new byte[is.available()];
is.read(data);
} catch (IOException e) {
log.error("get img stream meets error :", e);
} finally {
IOUtils.closeQuietly(is);
}
if (ArrayUtils.isEmpty(data)) {
String errorMessage = String.format("downLoad img verify code with xpath %s failed.", xpath);
throw new EnniuCrawlException(TargetResponseError.ERROR_RESPONSE_BODY, errorMessage);
}
String base64Img = Base64Utils.encodeToString(data);