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.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