Java Can';不要以编程方式执行登录

Java Can';不要以编程方式执行登录,java,swing,login,netbeans-7,htmlunit,Java,Swing,Login,Netbeans 7,Htmlunit,以下是我迄今为止使用该库所做的工作-它实际上是单击按钮时发生的事件: private void btnTestActionPerformed(java.awt.event.ActionEvent evt) { try{ final WebClient webClient = new WebClient(); // Get the first page final Ht

以下是我迄今为止使用该库所做的工作-它实际上是单击按钮时发生的事件:

private void btnTestActionPerformed(java.awt.event.ActionEvent evt) {                                        
        try{
        final WebClient webClient = new WebClient();

    // Get the first page
    final HtmlPage page1 = webClient.getPage("http://cashialize.com/wp-login.php");

    // Get the form that we are dealing with and within that form, 
    // find the submit button and the field that we want to change.
    final HtmlForm form = page1.getFormByName("loginform");

    final HtmlSubmitInput button = form.getInputByName("wp-submit");
    final HtmlTextInput userField = form.getInputByName("user_login");
    final HtmlTextInput passField = form.getInputByName("passField");

    // Change the value of the text field
    userField.setValueAttribute("admin");
    passField.setValueAttribute("blabla");

    // Now submit the form by clicking the button and get back the second page.
    final HtmlPage page2 = button.click();

    webClient.closeAllWindows();
        }catch(IOException e){
        System.out.println(e);
    }

    } 
我遵循了他们的指导,但对我来说,执行登录似乎是不可能的。我正在使用
netbeans7.4
,这是我第一次使用guibuilder。我通常在eclipse上工作(我仍然不能适应环境),但我确信它更容易。无论如何。我100%肯定我错过了一些非常小的东西,但我现在无法发现它

这是一个可怕的例外,巫婆什么也没告诉我:

Exception in thread "AWT-EventQueue-0" com.gargoylesoftware.htmlunit.ElementNotFoundException: elementName=[input] attributeName=[name] attributeValue=[user_login]
    at com.gargoylesoftware.htmlunit.html.HtmlForm.getInputByName(HtmlForm.java:463)
    at Main.btnTestActionPerformed(Main.java:95)
    at Main.access$000(Main.java:18)
    at Main$1.actionPerformed(Main.java:44)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
    at java.awt.Component.processMouseEvent(Component.java:6505)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
    at java.awt.Component.processEvent(Component.java:6270)
    at java.awt.Container.processEvent(Container.java:2229)
    at java.awt.Component.dispatchEventImpl(Component.java:4861)
    at java.awt.Container.dispatchEventImpl(Container.java:2287)
    at java.awt.Component.dispatchEvent(Component.java:4687)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
    at java.awt.Container.dispatchEventImpl(Container.java:2273)
    at java.awt.Window.dispatchEventImpl(Window.java:2719)
    at java.awt.Component.dispatchEvent(Component.java:4687)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:735)
    at java.awt.EventQueue.access$200(EventQueue.java:103)
    at java.awt.EventQueue$3.run(EventQueue.java:694)
    at java.awt.EventQueue$3.run(EventQueue.java:692)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
    at java.awt.EventQueue$4.run(EventQueue.java:708)
    at java.awt.EventQueue$4.run(EventQueue.java:706)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:705)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
编辑:

Mosty Mostacho建议的代码后的控制台输出

<?xml version="1.0" encoding="UTF-8"?>
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
    <title>
      Cashialize! You can do it! › Log In
    </title>
    <link rel="stylesheet" id="wp-admin-css" href="http://cashialize.com/wp-admin/css/wp-admin.min.css?ver=3.7" type="text/css" media="all"/>
    <link rel="stylesheet" id="buttons-css" href="http://cashialize.com/wp-includes/css/buttons.min.css?ver=3.7" type="text/css" media="all"/>
    <link rel="stylesheet" id="colors-fresh-css" href="http://cashialize.com/wp-admin/css/colors-fresh.min.css?ver=3.7" type="text/css" media="all"/>
Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: com.gargoylesoftware.htmlunit.html.HtmlPasswordInput cannot be cast to com.gargoylesoftware.htmlunit.html.HtmlTextInput
    <meta name="robots" content="noindex,nofollow"/>
  </head>
    at Main.btnTestActionPerformed(Main.java:97)
  <body class="login login-action-login wp-core-ui">
    <div id="login">
      <h1>
    at Main.access$000(Main.java:18)
    at Main$1.actionPerformed(Main.java:44)
        <a href="http://wordpress.org/" title="Powered by WordPress">
          Cashialize! You can do it!
        </a>
      </h1>
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
      <form name="loginform" id="loginform" action="http://cashialize.com/wp-login.php" method="post">
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
        <p>
          <label for="user_login">
            Username
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
            <br/>
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
    at java.awt.Component.processMouseEvent(Component.java:6505)
            <input type="text" name="log" id="user_login" class="input" value="" size="20"/>
          </label>
        </p>
        <p>
          <label for="user_pass">
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
            Password
            <br/>
            <input type="password" name="pwd" id="user_pass" class="input" value="" size="20"/>
    at java.awt.Component.processEvent(Component.java:6270)
    at java.awt.Container.processEvent(Container.java:2229)
          </label>
        </p>
    at java.awt.Component.dispatchEventImpl(Component.java:4861)
    at java.awt.Container.dispatchEventImpl(Container.java:2287)
    at java.awt.Component.dispatchEvent(Component.java:4687)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
        <p class="forgetmenot">
          <label for="rememberme">
            <input name="rememberme" type="checkbox" id="rememberme" value="forever"/>
    at java.awt.Container.dispatchEventImpl(Container.java:2273)
    at java.awt.Window.dispatchEventImpl(Window.java:2719)
             Remember Me
          </label>
        </p>
        <p class="submit">
    at java.awt.Component.dispatchEvent(Component.java:4687)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:735)
    at java.awt.EventQueue.access$200(EventQueue.java:103)
    at java.awt.EventQueue$3.run(EventQueue.java:694)
    at java.awt.EventQueue$3.run(EventQueue.java:692)
    at java.security.AccessController.doPrivileged(Native Method)
          <input type="submit" name="wp-submit" id="wp-submit" class="button button-primary button-large" value="Log In"/>
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
          <input type="hidden" name="redirect_to" value="http://cashialize.com/wp-admin/"/>
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
          <input type="hidden" name="testcookie" value="1"/>
    at java.awt.EventQueue$4.run(EventQueue.java:708)
        </p>
      </form>
      <p id="nav">
    at java.awt.EventQueue$4.run(EventQueue.java:706)
    at java.security.AccessController.doPrivileged(Native Method)
        <a href="http://cashialize.com/wp-login.php?action=lostpassword" title="Password Lost and Found">
          Lost your password?
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:705)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
        </a>
      </p>
      <script type="text/javascript">
//<![CDATA[

function wp_attempt_focus(){
setTimeout( function(){ try{
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
d = document.getElementById('user_login');
d.focus();
d.select();
} catch(e){}
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
}, 200);
}

wp_attempt_focus();
if(typeof wpOnload=='function')wpOnload();

//]]>
      </script>
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
      <p id="backtoblog">
        <a href="http://cashialize.com/" title="Are you lost?">
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
          ← Back to Cashialize! You can do it!
        </a>
      </p>
    </div>
    <div class="clear">
    </div>
  </body>
</html>

现金化!你能做到登录
线程“AWT-EventQueue-0”java.lang.ClassCastException中的异常:com.gargoylesoftware.htmlunit.html.HtmlPasswordInput无法转换为com.gargoylesoftware.htmlunit.html.HtmlTextInput
在Main.btnTestActionPerformed处(Main.java:97)
at Main.access$000(Main.java:18)
在Main$1.actionPerformed(Main.java:44)
在javax.swing.AbstractButton.fireActionPerformed上(AbstractButton.java:2018)
位于javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
在javax.swing.DefaultButtonModel.fireActionPerformed上(DefaultButtonModel.java:402)

用户名
在javax.swing.DefaultButtonModel.setPressed中(DefaultButtonModel.java:259)

在javax.swing.plaf.basic.BasicButtonListener.MouseRelease(BasicButtonListener.java:252) 位于java.awt.Component.ProcessMouseeEvent(Component.java:6505)

位于javax.swing.JComponent.ProcessMouseeEvent(JComponent.java:3321) 密码
位于java.awt.Component.processEvent(Component.java:6270) 位于java.awt.Container.processEvent(Container.java:2229)

位于java.awt.Component.dispatchEventImpl(Component.java:4861) 位于java.awt.Container.dispatchEventImpl(Container.java:2287) 位于java.awt.Component.dispatchEvent(Component.java:4687) 位于java.awt.LightweightDispatcher.RetargetMouseeEvent(Container.java:4832) 位于java.awt.LightweightDispatcher.ProcessMouseeEvent(Container.java:4492) 位于java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)

位于java.awt.Container.dispatchEventImpl(Container.java:2273) 位于java.awt.Window.dispatchEventImpl(Window.java:2719) 记得我吗

位于java.awt.Component.dispatchEvent(Component.java:4687) 位于java.awt.EventQueue.dispatchEventImpl(EventQueue.java:735) 在java.awt.EventQueue.access$200(EventQueue.java:103) 位于java.awt.EventQueue$3.run(EventQueue.java:694) 在java.awt.EventQueue$3.run(EventQueue.java:692) 位于java.security.AccessController.doPrivileged(本机方法) 位于java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) 位于java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87) 在java.awt.EventQueue$4.run(EventQueue.java:708)

在java.awt.EventQueue$4.run(EventQueue.java:706) 位于java.security.AccessController.doPrivileged(本机方法)

// 位于java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)


不要害怕,这是一个简单的问题:)HtmlUnit告诉你的是,除了这个例外,这一行:

final HtmlTextInput userField = form.getInputByName("user_login");
你什么也找不到。换句话说,表单中没有具有
name
属性和
user\u login
值的输入

我建议您在获取页面后立即输出该页面的代码,以查看它正在处理的实际代码:

final HtmlPage page1 = webClient.getPage("http://cashialize.com/wp-login.php");
System.out.println(page1.asXml());

您会发现您要查找的元素不在表单中。

不要害怕,这是一个简单的问题:)HtmlUnit在该例外情况下告诉您的是,在这一行中:

final HtmlTextInput userField = form.getInputByName("user_login");
你什么也找不到。换句话说,表单中没有具有
name
属性和
user\u login
值的输入

我建议您在获取页面后立即输出该页面的代码,以查看它正在处理的实际代码:

final HtmlPage page1 = webClient.getPage("http://cashialize.com/wp-login.php");
System.out.println(page1.asXml());

您会发现您要查找的元素不在表单中。

我可以在输出
用户名
中看到它,正如HtmlUnit和我一直告诉您的那样……)没有名为
user\u login
的属性。。。在你的评论中,它的值是
log
:)哦。。。但是我刚刚使用了
log
pwd
,我仍然得到了一个可怕的异常:'(您添加的异常与前一个不同。它也发生在下一行,这意味着您的第一个异常不再发生了(告诉您:P)所以你的问题现在应该已经得到了回答。无论如何,我会给你一个关于这个新的异常的提示:异常说
HtmlPasswordInput不能转换为HtmlTextInput
,所以只需在密码行中将
HtmlTextInput
更改为
HtmlPasswordInput
。记住:如果你有更多问题,请提出新问题(这个问题已经回答了)哇。它现在可以工作了!谢谢你的帮助。我仍然看不到用户登录,但可能是因为javascript。谁知道呢。无论如何,非常感谢你的帮助!!!我可以在输出
Username
中看到它,正如HtmlUnit和我一直告诉你的那样…:)没有名为
user\u login
的属性。在您的注释中,它的值为
log