2012-03-06 14 views
6

私はHTMLUNITを使用してウェブサイトのボタンをclcikしようとしています。このチュートリアルhttp://htmlunit.sourceforge.net/gettingStarted.htmlに従っていますが、フォーム名が必要です。私がしようとしているウェブサイトにはこのページソースがあります。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> 

私は、Webページ上の「はい」ボタン検証ボックスをクリックしようとしている。(Valdationの削除)付属のno形式名がありません見ることができるように。ここに私のコードです。

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によって、このように、この要素を取得することができます:

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

、あなたがそのアクションでより多くの要素を持っている場合は、適切にあなたが得ることを期待する要素を選択するXPathを設定する必要があります。 getFirstByXPathメソッドは、一致するすべての結果のうち1つだけを返します。多くの結果を得たい場合は、さらに処理を行うには、getByXPathメソッドを使用する必要があります。

どのように動作するか教えてください。

+0

ありがとうございます!私は答えとしてあなたをマークしました! –

+0

ありがとう、歓迎:) –

+0

この方法で私はフォームアクションのアクション= /ダイアログ/ oauth /読み取り – jackyesind

関連する問題