HttpUnit: Form wird nicht submitted

Status
Nicht offen für weitere Antworten.

abthun

Neues Mitglied
Hallo and alle und viele Grüße aus München!

Ich habe eine kleine HttpUnit-Testklasse gebaut um den Login meiner
Seite zu testen. Der Submit hat jedoch überhaupt keine Wirkung; ich bleibe
auf der Login-Seite stehen. Die Welcome-Page, die danach kommen sollte
wird nie erreicht. Habt Ihr einen Hinweis für mich? Mir gehen die Ideen aus

TIA, Andi

Code:
public void testMailLogin() throws Exception { 
try { 
WebConversation conversation = new WebConversation(); 
WebRequest request = new GetMethodWebRequest(URL); 
WebResponse response = conversation.getResponse(request); 
assertNotNull("No response from URL '" + URL + "'.", response); 
 
System.out.print("Fetching password login form ........."); 
WebForm loginForm = response.getFormWithName("login_Password"); 
assertNotNull("No form found with ID 'login_Password'", loginForm); 
System.out.println("OK.");  
 
// Fill out auth data and submit login form 
loginForm.setParameter("usr_name", "admin"); 
loginForm.setParameter("usr_password", "secret"); 
 
System.out.print("Test presence of login button ........"); 
SubmitButton sb = loginForm.getSubmitButton("login"); 
assertNotNull("No button found with ID 'login'", sb); 
System.out.println("OK.");  
response = loginForm.submit(sb); 
assertNotNull("No response after submit of login button", response); 
 
WebResponse selectUserPage = conversation.getCurrentPage(); 
 
System.out.println(selectUserPage.getTitle()); 
assertEquals(selectUserPage.getText().indexOf("Welcome") != -1, true); 
System.out.println("OK.");  
} 
catch (Exception e) { 
System.err.println("Exception: " + e); 
}  
 
} // testMailLogin()
-----

my page:
Code:
<form action="?" method="post" name="login_Password" target="_self" autocomplete="off" onsubmit="return isSingleClick()"> 
... 
<input maxlength="255" value="" name="usr_name" type="text" class="textfield " />
 
My password
 
<input maxlength="32" value="" class="textfield " type="password" name="usr_password" />
 
 
... 
 
</form>
 
form action="?"

was soll das bewirken?
Wie sieht der Button aus?

<form action="#" method="post">
<input type="submit" value="blah" />
</form>
 
*Huch*, jetzt sehe ich erst die Antwort; habe die E-Mail-Benachrichtigung nicht bekommen.
Danke für´s Feedback.

Das ist ein "ganz normaler" Button, der bewirkt,
dass Username und Passwort gesendet werden.

Viele Grüsse,
Andi
 
Solltest du nicht mit dem response des Buttons weiterarbeiten? Wird dein Formular im Browser sauber gepostet und alles?
Läuft dein Code komplett durch ohne Exceptions? Die ganzen Ausgaben werden gemacht?
Kann es sein dass du bei dem POST-Request auto-forwarding aktivieren musst? Ich kennst nur vom HttpClient von Apache, und da musste separat noch auto-forwarding akzeptieren, da das Loginscript ja weiterleitet.

Wie sieht der Code vom Button aus? Wie sieht der Login-Code aus? Wird der Login über ein Servlet gesteuert?

Ui..fragen über fragen 🙂

Edit:
Noch ne Frage 😀
Mach mal Ausgaben in den Logincode rein um zu überprüfen ob der Code überhautp aufgerufen wird.
 
KSG9|sebastian hat gesagt.:
Solltest du nicht mit dem response des Buttons weiterarbeiten? Wird dein Formular im Browser sauber gepostet und alles?
Läuft dein Code komplett durch ohne Exceptions? Die ganzen Ausgaben werden gemacht?
Kann es sein dass du bei dem POST-Request auto-forwarding aktivieren musst? Ich kennst nur vom HttpClient von Apache, und da musste separat noch auto-forwarding akzeptieren, da das Loginscript ja weiterleitet.

Wie sieht der Code vom Button aus? Wie sieht der Login-Code aus? Wird der Login über ein Servlet gesteuert?

Ui..fragen über fragen 🙂

Edit:
Noch ne Frage 😀
Mach mal Ausgaben in den Logincode rein um zu überprüfen ob der Code überhautp aufgerufen wird.

Hi!

Meiner Meinung nach arbeite ich mit der Response vom Button: response = loginForm.submit(sb);
Oder was meinst Du?

Der Code läuft komplett durch, es handelt sich um eine bestehende Intranet-Seite, die ich nicht
gebaut habe; ich möchte nur mal automatisch testen.

Wenn ich mir den Quelltext der Seite anzeigen lasse, sieht der so aus:

Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title> Authentication Service</title>
<meta content="-1" http-equiv="Expires"/>
<meta content="no-cache" http-equiv="Pragma"/>
<meta content="text/javascript" http-equiv="Content-Script-Type"/>
<meta content="text/css" http-equiv="Content-Style-Type"/>

<style>
.loginField {
  height: 255px;
}
</style>

<link title="default_design_intranet" href="../login/styles/default_design.css" type="text/css" rel="stylesheet" />



<script type="text/javascript">
<!--
var checkflag = 1;

function isSingleClick() {

  if (checkflag == 1) {
    checkflag = checkflag + 1;
    return true;
	} else {
    return false;
  }
}

function closeChangePasswordPopup()
{
    // If we are in the change password popup then we close this window as it is no longer needed

    if (window.name == "GAChangePasswordWindow")
    {
        window.close();
    }
}


window.onload = closeChangePasswordPopup;
    
// -->
</script>



<script type="text/javascript">
<!--
function clearLogin() {
  document.forms.login_Password.reset();
  return true;
}

window.onunload = clearLogin;
// -->
</script>


</head>
<body>
<div id="displayArea" name="display">

<div id="logo">[img]../../login/images/default_design/login-visual.gif[/img]</div>






<div id="GlobalHeader">
		
		<style>
 		#GlobalHeader {
		  clear: none;
		}
		</style>
	</div>



<div id="loginGeneralHeader">

Welcome to the "Digital Doorman"!  
		
		<!--
		<style>
 		#loginGeneralHeader {
		  clear: none;
		}
		</style>
		-->
	
The application you tried to access requires your authentication. 
		By using one of the login methods below your access to the retrieved 
		application - and to other applications protected by Digital Doorman - 
		will be granted. (So called "Single Sign-On")
		
"Certificate-Login" is the most secure login method. Please use it, if ever possible.
	
</div>

<div id="hotline">If you need help, please contact your [img]../../login/images/default_design/icon-support.gif[/img][url="https://intranet.enter.myCompany.com/index.jsp?sdc_p=po2000001031260fcls6m1t4u19&sdc_entdoc=true"]hotline[/url]</div>


<!-- GeneralError
<table class="ErrorMessage">
<tr>
<td class="ErrorSymbol"><div class="ErrorSymbol">[img]../../login/images/default_design/icon-error.gif[/img]</div></td>
<td class="ErrorText">Login is not working in the moment, please do not try to login.</td>
</tr>
</table>
GeneralError -->
<table id="loginTable">
<tr>
<td width="7px">
[img]../../login/images/default_design/spacer.gif[/img]
</td>


<td class="login">
<div class="loginField">
<div class="loginHeader">
[url="../help/en_US/pages/index_email.html"]?[/url]
<div class="loginHeaderTitle">E-Mail Login</div>
</div>
<form action="?" method="post" name="login_Password" target="_self" autocomplete="off" onsubmit="return isSingleClick()">
<!-- PasswordError
<table class="ErrorMessage">
<tr>
<td class="ErrorSymbol"><div class="ErrorSymbol">[img]../../login/images/default_design/icon-error.gif[/img]</div></td>
<td class="ErrorText">Login with username and password is not working in the moment, please try another login method.</td>
</tr>
</table>
PasswordError -->
<div class="loginBodyPwd"><div>

My  e-mail address

<input maxlength="255" value="" name="usr_name" type="text" class="textfield " />

My password

<input maxlength="32" value="" class="textfield " type="password" name="usr_password" />


<div id="saveEmail">

<input type="checkbox" name="SaveEmail" class="checkbox" />


<div class="checkboxPwdLabel">Remember my e-mail address</div>
</div>

</div></div>
<button accesskey="e" name="login" type="submit" class="button loginPwdButton">Login</button>
<input name="AUTHMETHOD" value="UserPassword" type="hidden" />
<input name="Design" value="default_design_intranet" type="hidden" />
<input name="GAURI" value="https://dev.myProject.myCompany.com/webCenter/" type="hidden" />
<input name="URI" value="https://dev.myProject.myCompany.com/webCenter/" type="hidden" />
<input name="GAREASONCODE" value="-1" type="hidden" />
<input name="GARESOURCEID" value="dev1entitle" type="hidden" />
<input name="loginPassword" value="" type="hidden" />
<input name="LOCALE" value="en_US" type="hidden" />

</form>
<div class="loginAddContent">


<form action="?" method="post" name="new_Password" id="form_new_Password" target="_self" onSubmit="return isSingleClick()">

    		<input type="hidden" name="lang" value="en" />
	
<div style="font-weight: bold">Do you need a password?</div>
My  e-mail address

<input maxlength="255" value="" name="mail" type="text" class="textfield " />

<button name="requestPassword" type="submit" class="button pwdButton">Request</button>
</form>


</div>

</div>
</td>


</tr>
</table>

</body>
</html>
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben