0

我正在尝试登录我的大学网站,但遇到了 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 回答