gpt4 book ai didi

java - 我可以使用 HtmlUnit 来监听资源加载事件吗?

转载 作者:行者123 更新时间:2023-11-30 11:01:18 27 4
gpt4 key购买 nike

我正在尝试使用 HtmlUnit 来检测无法在网页上加载的资源(脚本、图像、样式表等)。

我试过了

new WebConnectionWrapper(webClient) {
@Override
public WebResponse getResponse(WebRequest request) throws IOException {
WebResponse response;
response = super.getResponse(request);
System.out.println(response.getStatusCode());
return response;
}
};

没有用。它似乎不处理 CSS、图像或 JS,尽管有 HtmlUnit 日志记录:

statusCode=[404] contentType=[text/html] File: /resources/style.css

作为引用,这是我正在加载的文件:

<!DOCTYPE html>
<html>
<head>
<title>Test</title>
<script type='text/javascript'>
var xhr = new XMLHttpRequest();
xhr.open("get", "someBadLink", true);
xhr.send();
</script>
<link href="/resources/style.css" rel="stylesheet"/>
</head>

<body>
<img src="bad_image.png">
Cool.
</body>
</html>

有没有什么办法可以使用HtmlUnit来检测全部404的AJAX资源、CSS脚本和图片?

最佳答案

  • 对于 AJAX,您必须按照提示等待 here .
  • HtmlUnit 不会自动加载 HtmlLinkHtmlImage ,出于性能原因。
  • 请在下面找到将打印所有内容的代码段。您可以使用 .getByXPath()获取所有元素的列表。


public static void main(String[] args) throws Exception {
try (final WebClient webClient = new WebClient()) {

new WebConnectionWrapper(webClient) {
@Override
public WebResponse getResponse(WebRequest request) throws IOException {
WebResponse response = super.getResponse(request);
System.out.println(request.getUrl());
System.out.println(response.getStatusCode());
return response;
}
};

String url = "http://localhost/test.html";
HtmlPage page = webClient.getPage(url);

// to wait for AJAX
webClient.waitForBackgroundJavaScript(3000);

// to forcibly load the link
HtmlLink link = page.getFirstByXPath("//link");
link.getWebResponse(true);

// to forcibly load the image
HtmlImage image = page.getFirstByXPath("//img");
image.getImageReader();
}
}

关于java - 我可以使用 HtmlUnit 来监听资源加载事件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31253688/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com