我有一个网页,我在javascript中实现了window.setTimeout
。问题是我正在实现一个计时器,当该时间到期时弹出一条消息。该值存储在cookie中。
因此,当页面加载时,我使用超时值配置计时器。因此,即使重新加载页面,也会在每次页面加载时再次创建计时器。
现在,当我尝试通过htmlunit(版本--2.15)进行测试时,我的每一页都开始加载比平时更长的时间。
我们有以下Webclient配置
webClient.getOptions().setTimeout(FIVE_MINUTES_IN_MILLIS);
webClient.waitForBackgroundJavaScript(NINETY_SECONDS);
我猜测在htmlunit中实现window.setTimeout
的方式是它将等待执行定时器或waitForBackgroundJavaScript超时值(以先发生者为准)。因此,当我的计时器高(30分钟)并且我的htmlunit的每一步等待90秒时,我的htmlunit运行速度变慢。
我应该如何配置我的htmlunit,以便我的脚本不会等待该计时器。此外,我需要waitForBackgroundJavaScript
,否则,我的ajax调用将无效。
有人可以帮忙吗?
答案 0 :(得分:0)
我喜欢这样等待我的ajax调用:
...
HtmlPage page = (HtmlPage) webClient.getPage(url);
HtmlInput details = null;
int tries = 10;
while (tries > 0 && details == null) {
tries--;
details = (HtmlInput) page.getElementById("PlaceHolderConteudo_grdListaResultado_btnDetalhar_0");
synchronized (page) {
page.wait(1500);
}
}
...
答案 1 :(得分:0)
您可以根据尚未处理的作业数量实现自己的等待
JavaScriptJobManager tmpJobManager = myPage.getEnclosingWindow().getJobManager();
int tmpJobCount = tmpJobManager.getJobCount(jobFilter);
在这种情况下,您可以提供自己的JavaScriptJobFilter。因此,您可以自由地从作业列表中排除某些作业以等待