我如何登錄到使用HtmlUnit?登錄網站時使用HtmlUnit當登錄表單是javascript
網址爲:https://www.jambox.pl/ogladaj
登錄表單似乎並不有一個ID,所以我不能用getFormByName()
得到它。
我如何登錄到使用HtmlUnit?登錄網站時使用HtmlUnit當登錄表單是javascript
網址爲:https://www.jambox.pl/ogladaj
登錄表單似乎並不有一個ID,所以我不能用getFormByName()
得到它。
你並不需要一個ID或名字得到一個HtmlForm
你可以得到網頁上的所有形式,並尋找一些特定的屬性。
或者你也可以直接使用XPath。
public static void main(String[] args) throws Exception {
try (WebClient webClient = new WebClient()) {
webClient.getOptions().setUseInsecureSSL(true);
HtmlPage page = webClient.getPage("https://www.jambox.pl/ogladaj");
// get the form first
for (HtmlForm form : page.getForms()) {
System.out.println(form.asXml());
//if this is your form, use it.
}
// or using XPath with attribute 'action'
HtmlForm form2 = page.getFirstByXPath("//form[@action='/widget2']");
}
}
然而,似乎HtmlUnit沒有檢索所有的形式,這是我認爲的錯誤。
我知道怎麼去的form.but Htmlpage沒有看到第二個形式<form action = "/ widget2 ">
List<HtmlForm> list = new ArrayList<HtmlForm>();
list=page.getForms();
System.out.println(list.size());
HtmlForm form = list.get(0);
System.out.println(form.asXml());
此返回代碼大小
1
<form action="/ogladaj" accept-charset="UTF-8" method="post" id="search-theme-form">
<div>
<div id="search" class="container-inline">
<div class="form-item" id="edit-search-theme-form-1-wrapper">
<input type="text" maxlength="128" name="search_theme_form" id="edit-search-theme-form-1" size="15" value="Szukaj" class="form-text NormalTextBox txtSearch" onfocus="if (this.value == 'Szukaj') {this.value = '';}" onblur="if (this.value == '') {this.value = 'Szukaj';}"/>
</div>
<input type="submit" name="op" id="edit-submit" value="Szukaj" class="form-submit"/>
<input type="hidden" name="form_build_id" id="form-Se_XpWDahQvAp1Wfd2dmZjjwvuAW37ojsRiy8RXlNHk" value="form-Se_XpWDahQvAp1Wfd2dmZjjwvuAW37ojsRiy8RXlNHk"/>
<input type="hidden" name="form_id" id="edit-search-theme-form" value="search_theme_form"/>
</div>
</div>
</form>
你有興趣在位於一個iframe中的表單。你必須深入挖掘...
public static void main(String[] args) throws Exception {
try (WebClient webClient = new WebClient()) {
webClient.getOptions().setUseInsecureSSL(true);
HtmlPage page = webClient.getPage("https://www.jambox.pl/ogladaj");
HtmlInlineFrame frame = (HtmlInlineFrame) page.getElementById("jambox-frame");
HtmlPage framePage = (HtmlPage) frame.getEnclosedPage();
// the login elements
framePage.getHtmlElementById("login-field").type("[email protected]");
framePage.getHtmlElementById("password-field").type("victoria");
for (HtmlForm form : framePage.getForms()) {
if (form.getActionAttribute().equals("/widget2/")) {
// System.out.println(form.asXml());
for (HtmlElement input : form.getElementsByTagName("input")) {
if (input.getAttribute("value").startsWith("Zaloguj")) {
// System.out.println(input);
input.click();
}
}
}
}
}
}
使用jquery並使用$(「。form」),你將得到窗體對象。 –
我想以Java登錄該網站 – mati2762
等待,所以你有一個Java應用程序,你想用它來調用一個JavaScript函數?我認爲你的運氣不好,然後創建一個JavaScript跑步者並下載腳本......我想你會有更多的運氣下載腳本並研究它並在Java中創建它自己的版本。不要誤解Javascript和Java會被連接,所以Javascript被稱爲只是因爲它與Java共享某些語法,而不是它的實際運行時或開發。 –