gpt4 book ai didi

java - HtmlUnit 等待 ajax 响应

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

我有一个项目,我需要使用一个站点从中获取数据。所以事情是:使用 htmlunit 我用我的数据填充文本框,然后我按下使用 ajax 的 anchor 来下载我需要的内容并动态更改 HTML 页面,在模式窗口中显示内容。但是在 anchor 上使用 .click() 后,我得到了相同的页面,但没有更新,在四处寻找解决方案后,我在网上找到了这个:

HtmlUnit will execute the Ajax call and will update the page. Just observe that, unlike a regular page loading, the click() call will not wait for the completion of the Ajax request. It will proceed to the next line of code right away.

这是我的代码:

final HtmlPage page = webClient.getPage("myUrl");
System.out.println(page.asXml());
final HtmlForm form = page.getFirstByXPath("//form[@action='myFormAction']");
final HtmlTextInput input = form.getInputByName("url");
input.setText(vacancyURL);

List<HtmlAnchor> anchors = page.getAnchors();
HtmlAnchor link = null;

for (HtmlAnchor anchor : anchors) {
String str = anchor.asText();
if (anchor.asText().equals("Start"))
link = anchor;
}

HtmlPage page2 = link.click(); //I think this is a problem

有什么想法可以点击 anchor 并等待 ajax 收到响应,并用数据填充页面(在浏览器上一切正常)?我真的需要帮助,有什么想法吗?

最佳答案

哦,这是一个老问题..我想分享我的解决方案..我认为 page.wait 很恶心...因为当 ajax 请求完成时你不会立即得到通知,会有延迟..我的答案是使用方法

com.gargoylesoftware.htmlunit.javascript.background.JavaScriptJobManager#waitForJobs

调用示例:page.getEnclosingWindow().getJobManager().waitForJobs(1000);

页面是一种com.gargoylesoftware.htmlunit.html.HtmlPage

1000 是 timeoutMillis,这意味着您要等待的最长时间(以毫秒为单位)

关于java - HtmlUnit 等待 ajax 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25835172/

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