2012-05-10 10 views
1

私はHtmlUnityで手をかけていますが、javaScriptで領域をクリックしようとすると問題が発生しました。HtmlAreaでは()をクリックしても何も変更されません。なぜですか?

import java.io.IOException; 
import java.net.MalformedURLException; 

import com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException; 
import com.gargoylesoftware.htmlunit.WebClient; 
import com.gargoylesoftware.htmlunit.html.HtmlArea; 
import com.gargoylesoftware.htmlunit.html.HtmlElement; 
import com.gargoylesoftware.htmlunit.html.HtmlMap; 
import com.gargoylesoftware.htmlunit.html.HtmlPage; 

public class ToPost { 

    /** 
    * @param args 
    * @throws IOException 
    * @throws MalformedURLException 
    * @throws FailingHttpStatusCodeException 
    */ 
    public static void main(String[] args) throws FailingHttpStatusCodeException, MalformedURLException, IOException { 
     HtmlPage page; 
     final WebClient webClient = new WebClient(); 
     page = webClient.getPage("http://www.hidrografico.pt/previsao-mares.php"); 
     System.out.println(page.getTitleText()); 
     HtmlPage pagePortoLeixoes = setPort(page, "362,64,440,90"); 
     System.out.println("Are they the same? "+page.asXml().equals(pagePortoLeixoes.asXml())); 
    } 

    private static HtmlPage setPort(HtmlPage page, String coordinatesPort) throws IOException { 
     HtmlMap map = page.getHtmlElementById("FPMap1"); 
     Iterable<HtmlElement> childAreas = map.getChildElements(); 
     HtmlArea tempArea; 
     for (HtmlElement htmlElement : childAreas) { 
      tempArea = (HtmlArea) htmlElement; 
      if(tempArea.getCoordsAttribute().equals(coordinatesPort)){ 
       System.out.println("Found Leixoes! --> "+ tempArea.asXml()); 
       return tempArea.click(); 
      } 
     } 
     return null; 
    } 
} 

私はそれをここに表示されませんが、私は私がしたいページには本当にないんだけど、私の完全なコードをダブルチェック:ここ

はコードがあります。

何が起こっていますか?なぜクリックは機能しませんか?

答えて

0

HtmlUnit.click()は、「複雑な」javascriptが関与しているとよく機能しません。

http://htmlunit.sourceforge.net/apidocs/com/gargoylesoftware/htmlunit/html/HtmlElement.html#click()

要素がクリックされた後にフォーカスを持つウィンドウでページを返す、この要素をクリックしてシミュレートします。返されるページは、クリックされる要素のタイプ、JavaScriptアクションリスナーの存在などによって元のページと同じでも異なってもよいことに注意してください。

この場合、データをキャッチする別の方法。私が見たのは何

は.RSSリンクを使用すると、それはあなたに都市への直接リンクを与えることがある... 例:http://www.hidrografico.pt/previsao-mares-aveiro.php

もう一つの方法は、(HttpfoxとexempleをチェックするPOSTリクエストを偽造していたと思われますあなたがページを取得しているときにリクエストが行われます)

関連する問題