gpt4 book ai didi

java - HTMLUnit : different code from when view source in Chrome

转载 作者:行者123 更新时间:2023-11-30 04:14:04 26 4
gpt4 key购买 nike

我正在使用 HTMLUnit 来获取网络上的页面。在这个网页中,有一个表格。当我从 Chrome 加载并查看源代码时:如下所示:

<form name="form" method="post" onsubmit="return checkDate();">
<input name="check_in_date" id="check_in_date" readonly="readonly" type="text" class="hasDatepicker"/>
<input name="check_out_date" id="check_out_date" readonly="readonly" type="text" class="hasDatepicker"/>
<input name="check_availability" value="test condition" type="submit"/>
</form>

但是当我通过以下代码使用 HTMLUnit 进行加载时:

String url = "sample link";
WebClient webClient = new WebClient();
webClient.getOptions().setJavaScriptEnabled(true);
webClient.getOptions().setCssEnabled(false);
webClient.setAjaxController(new NicelyResynchronizingAjaxController());
HtmlPage page = webClient.getPage(url);
System.out.println(page.asXML());

我得到不同的 HTML 代码。更多详细信息:

<form name="form" method="post" onsubmit="return checkDate();">
<input name="check_in_date" id="check_in_date" readonly="readonly" type="text" class="hasDatepicker"/>
<input name="check_out_date" id="check_out_date" readonly="readonly" type="text" class="hasDatepicker"/>
<input name="check_availability" value="test condition" type="text"/>
</form>

这里的不同之处是:最后一行:<input name="check_availability" value="test condition" type="text"/>现在输入文本,而不是提交,所以我不能使用这种代码:

HtmlForm form = page.getFormByName("form");
HtmlSubmitInput submit = form.getInputByName("check_availability"); // error at this line
page = submit.click();

错误,因为现在该字段不是 button不再是这样,它只是一个文本。我不知道为什么会有这种差异。请告诉我如何解决这个问题。

谢谢:)

最佳答案

使用 htmlunit 提交 html 表单有多种方法。

创建一个提交按钮并将其附加到表单中,然后单击它。像这样的事情:

HtmlElement ele=page.createElement("input");
ele.setAttribute("type","submit");
form.appendChild(ele);
ele.click();

引用文献: First - Html Page

Second DomNode

Third - DomElement

第二种方法

只需触发 JavaScript 即可提交表单

String javaScriptCode="document.getElementById("formid").submit()";
Object result = page.executeJavaScript(javaScriptCode).getJavaScriptResult();

第二种方法不起作用,因为没有与表单关联的 ID,但为了答案的完整性,我已经提到了它。

警告:上述代码未经测试,但应该可以正常工作。

关于java - HTMLUnit : different code from when view source in Chrome,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18874464/

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