0

大学の Web サイトにログインしようとしていますが、html ユニットで問題が発生しました。

私のコード:

    WebClient webClient = new WebClient(BrowserVersion.INTERNET_EXPLORER_8);
    webClient.setJavaScriptEnabled(false);
    webClient.setThrowExceptionOnScriptError(false);
    HtmlPage currentPage = webClient.getPage("http://www.oid.hacettepe.edu.tr/cgi-bin/menuindex.cgi");
    HtmlForm form = currentPage.getForms().get(0);  // forms correct
    System.out.println(form.asXml());
    HtmlTextInput name = form.getInputByName("login");
    HtmlPasswordInput pass = form.getInputByName("passwd");
    name.setValueAttribute("*****");
    pass.setValueAttribute("*****");
    HtmlSubmitInput button = form.getInputByName("SubmitName");
    HtmlPage page2 = button.click();
    System.out.println(page2.asText());

結果 :

Exception in thread "main" com.gargoylesoftware.htmlunit.ElementNotFoundException: elementName=[input] attributeName=[name] attributeValue=[login]
    at com.gargoylesoftware.htmlunit.html.HtmlForm.getInputByName(HtmlForm.java:460)
    at hacettepe.Hacettepe.main(Hacettepe.java:34)
Java Result: 1

この問題に関する私の考えのどこが間違っているのか説明できますか? どうもありがとう。

4

2 に答える 2

0

ページに要素「ログイン」が見つからなかったためです。

于 2013-02-27T11:04:37.740 に答える
0

user2115021 が提案したように、最初のステップとして、探している要素が実際に要求した最初のページにあることを確認します。特に、「login」、「psswd」、および「SubmitName」が「currentPage」内の実際の値であることを確認してください。

それでもうまくいかない場合は、フォームの名前を取得する方法を変更してみてください。私は使用しました

final HtmlForm form = page.getFormByName("loginform");

前は問題なく。getForms() は複数のフォームを返す場合があり、正しいフォームを見ていることを確認する必要があります。

于 2013-03-08T03:32:16.720 に答える