2012-03-06 2 views
6

HTML 튜토리얼 http://htmlunit.sourceforge.net/gettingStarted.html에 따라 HTMLUNIT를 사용하여 웹 사이트의 버튼을 clcik하려고하지만 양식 이름이 필요합니다. 이 페이지 소스는 내가하려는 웹 사이트에 있습니다. HTMLUNIT 웹 사이트에 양식 이름이 지정되지 않은 getformbyname

<form method="post" action="doDelete"> 
    Are you sure you want to delete 'Apple?'? 
<input name="Submit" value="Yes" class="submit-button" type="submit" /> 
</form> 

나는 웹 페이지에 "예"버튼 확인 상자를 클릭하려고 해요. (Valdation 삭제) 사용자가 제공 어떤 형태의 이름은 아직 없다. 여기 내 코드가있다.
final WebClient webClient = new WebClient(); 
     final HtmlPage page1 = webClient.getPage("http://ma.some-site.com:8080/user/mike/delete"); 



     List<HtmlForm> formlist = (List<HtmlForm>) page1.getForms(); 
     System.out.println(formlist.toString()); 

     final HtmlForm form = page1.getFormByName("myform"); <---Problem here 
     final HtmlSubmitInput button = form.getInputByName("Submit"); 
     button.click(); 
     webClient.closeAllWindows(); 

나는이 시도하지만 양식 이름을 찾기 위해 XPath를 사용할 수 있다고 생각

final HtmlForm form = page1.getFormByName(formlist.get(1).getLocalName()); 

를 작동하지 않는 이유는 무엇입니까?

답변

13

예, XPath에 의해이 방법이 요소를 얻을 수 있습니다 : 당신은 당신이 제대로 당신이 얻을 것으로 예상되는 요소를 선택하는 XPath를 설정해야 해당 작업에 더 많은 요소가있는 경우, 물론

final HtmlForm form = page1.getFirstByXPath("//form[@action='doDelete']"); 

합니다. getFirstByXPath 메서드는 일치하는 모든 결과 중 하나만 반환합니다. 많은 결과를 얻고 추가 ​​처리를 원할 경우 getByXPath 메소드를 사용해야합니다.

어떻게 작동하는지 알려주십시오.

+0

고맙습니다. 나는 당신을 대답으로 표시했습니다! –

+0

감사합니다. 환영합니다. –

+0

이 경우 어떻게 동작을 추가할까요 =/dialog/oauth/read – jackyesind

관련 문제