2016-12-13 55 views
0

形式在下面的網站,我嘗試到的HtmlUnit訪問登錄名和密碼的形式:https://zof.interreport.com/diveport#的HtmlUnit無法找到網站

但是這個非常簡單的JavaScript返回一個空列表[]。

void homePage() throws Exception{ 

    final WebClient webClient = new WebClient(BrowserVersion.CHROME); 
    final HtmlPage page = webClient.getPage("https://zof.interreport.com/diveport#"); 
    System.out.println(page.getForms()); 
} 

因此不知何故HtmlUnit不能識別頁面上的表單。我怎樣才能解決這個問題?

回答

0

我沒有工作對API,但這裏是招

  1. 打開同一網頁在瀏覽器中禁用JavaScript的。它不工作。

    • 這意味着頁面使用一些JavaScript DOM操作加載其內容。
    • 如果你不能在這裏得到HTML,那麼你在使用的API必須有一些出路。
  2. 檢查HtmlUnit api文檔。類JAVADOC

    • 有方法

    公共ScriptResult executeJavaScript(字符串源代碼)

這裏的關鍵是,如果你使用的是不會在其韓元執行JavaScript API和你必須爲它編碼。

1

起初:你只顯示一些java代碼,但你談論的JavaScript - 有什麼缺少?

關於表格。您嘗試測試的頁面是在客戶端執行一些工作的這些頁面之一。這意味着,在頁面加載後,真正的頁面/ DOM是通過調用JavaScript在您的瀏覽器內部創建的。使用HtmlUnit時,您必須注意這一點。在簡單的情況下,等待處理javacript就足夠了。

此代碼的工作對我來說:

final WebClient webClient = new WebClient(BrowserVersion.CHROME); 
    final HtmlPage page = webClient.getPage("https://zof.interreport.com/diveport#"); 
    webClient.waitForBackgroundJavaScriptStartingBefore(5000); 
    System.out.println(page.getForms()); 

務必小心,以HtmlUnit的使用最新的快照版本。

+0

謝謝!那工作。但是,只有一種形式被發現。你能告訴我如何訪問登錄和密碼字段和登錄按鈕嗎? – Diederik

+0

使用Firebug檢查頁面/ dom結構,並使用HtmlUnit API(從這裏開始:http://htmlunit.sourceforge.net/gettingStarted.html) – RBRi

+0

啊太糟糕了,你也不知道。不過謝謝! – Diederik

相關問題