2014-11-03 3 views
0

Мне нужно проверить мой экран входа в тестовый класс JWebunit.
На странице нет кнопки sumbit. Мы используем тег href.
Когда мы нажимаем href, процесс переходит к goPasswordPage метод сценария. этот скрипт вызовет соответствующий сервлет LoginServelet.java.Как вызвать метод javascript из JWebunit

Детали процесса Home.jsp --> LoginServlet.java --> password.jsp

home.jsp

<head> 
... 
... 
<title>Home</title> 
<script type="text/javascript"> 
     function goToPasswordPage() { 
      var mainForm1 = document.forms["mainForm"]; 
      mainForm1.submit(); 
     } 
</script> 
</head> 
<body> 
     <form id="mainForm" method="GET" action="LoginServlet"> 
      <table cellpadding="10" cellspacing="10"> 
       <tr> 
        <td>UserName:</td> 
        <td><input id="username" name="username" type="text" /></td> 
       </tr> 
       <tr> 
        <td><a href='javascript:goToPasswordPage()'>Go Password Page</a> 
       </tr> 
      </table> 
     </form></body></html> 

LoginServlet.java

public class LoginServlet extends HttpServlet { 
private static final long serialVersionUID = 1L; 

public LoginServlet() { 
    super(); 
} 

protected void doGet(HttpServletRequest request, 
     HttpServletResponse response) throws ServletException, IOException { 

    String userName = request.getParameter("username"); 

    /** 
    * Here we did some back end validation. 
    * Based on the validation, 
    * decided to navigate: go to the password page or same home page 
    */  
    request.getRequestDispatcher("/password.jsp").forward(request, response); 
} 


protected void doPost(HttpServletRequest request, 
     HttpServletResponse response) throws ServletException, IOException {   
} 
} 

password.jsp

... 
... 
<head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
<title>Password</title> 
</head><body> 
    <% 
     String username = request.getParameter("username"); 
    %> 
    <p>Welcome <%=username%>!!!</p> 
</body></html> 

класс JWebUnit Test

BasicWebAppTest.java

package com.jwebunit.test; 

import org.junit.Before; 
import org.junit.Test; 
import static net.sourceforge.jwebunit.junit.JWebUnit.*; 

public class BasicWebAppTest { 
@Before 
public void setUp() throws Exception { 
    setBaseUrl("http://localhost:7070/BasicWebApp"); 
} 

@Test 
public void testJSFDemoMethod() { 

    beginAt("/home.jsp"); 

    assertTitleEquals("Home"); 
    setTextField("username", "Jack123"); 

    /** 
    * Here i have to write the code for 
    * calling the javascript or href tag action 
    */ 

    assertTitleEquals("Password"); 
} 
} 

Пожалуйста, помогите мне. благодарит заранее.

ответ

0

Если на странице есть несколько ссылок на использование ссылок. в противном случае не нужно использовать индекс в clickLinkWithExactText метод

@Test 
public void testJSFDemoMethod() 
{ 
    beginAt("/home.jsp"); 
    assertTitleEquals("Home"); 
    setTextField("username", "Jack123"); 

    clickLinkWithExactText("Go Password Page",0); //This is the answer for my question 

    assertTitleEquals("Password"); 
}