2012-05-10 6 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()이 요소에

을 시뮬레이션 클릭. 반환 된 페이지는 클릭 한 요소의 유형, 자바 스크립트 액션 수신기의 존재 여부 등에 따라 원래 페이지와 동일하거나 다를 수 있습니다.

이 경우에는 데이터를 잡는 다른 방법. 내가 무엇을 보았는가

은 .rss 링크를 사용하여, 그것은 당신에게 도시로의 직접 링크를 제공한다는 것입니다 ... 예 : http://www.hidrografico.pt/previsao-mares-aveiro.php

또 다른 방법은 (Httpfox와 exemple를 확인 POST 요청을 위조이었을 페이지가 달라 붙으면 요청이 처리됩니다.

관련 문제