51Testing软件测试论坛

标题: selenium 登录页面测试代码怎么写 [打印本页]

作者: casilin    时间: 2011-3-14 08:27
标题: selenium 登录页面测试代码怎么写
selenium有一个方法是getAlert(),是获得弹出窗口的信息。我不输入用户名或密码点击[确定]按钮后会通过js弹出一个请填写用户名或密码,这个弹出信息窗可以捕捉到,但是我填写错误的用户名或密码,点击[确定]后,会提交至另一个页面处理,然后不正确便弹出信息框提示登录失败,这个弹出框我就捕捉不到,我该怎么写?我的具体代码如下:

selenium.open("http://登录页面地址");
selenium.type("user", "admin");
selenium.type("pwd", "admin");
selenium.click("btn");
String message = selenium.getAlert();

运行的时候报找不到这个alert。

这个确定按钮点击后都是调用一个js程序,如果有用户名或密码没有天, 则直接alert一个信息框,如果都填写了则转向另一个处理页面。
作者: robin.von    时间: 2011-3-14 15:00
if (selenium.isAlertPresent()){
String message = selenium.getAlert();
......
}else{
......
}
作者: casilin    时间: 2011-3-15 16:19
回复 2# robin.von


    它就是捕捉不到这个alert的弹出框,如果按照你这个判断的话,那么isAlertPresent()结果为false,我依旧不能获得该弹出框的信息
作者: robin.von    时间: 2011-3-15 16:56
把测试页面的源代码帖出来!
作者: casilin    时间: 2011-3-16 09:11
回复 4# robin.von

这个就是被测代码,有很多样式和无关的我都删去了。

  1. <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
  2. <head>
  3.         <title>test</title>
  4.        
  5.         <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  6.         <meta http-equiv="expires" content="0" />
  7.         <meta http-equiv="CACHE-CONTROL" content="no-cache" />
  8. </head>
  9. <script language="javascript" type="text/javascript" src="./js/cookiecontrol.js">
  10. </script>

  11. <script type="text/javascript">

  12. function validate()
  13. {       
  14.         if (checkbox()==true)
  15.         {
  16.                 document.mainform.submit();
  17.         }
  18. }
  19. function checkbox()
  20. {
  21.         var txt_user = document.getElementById('user');
  22.         var txt_pwd = document.getElementById('pwd');
  23.         if(txt_user.value=='')
  24.         {
  25.                 alert('The user name should not be empty.');
  26.             mainform.user.focus();
  27.             return false;
  28.            }
  29.            if(txt_pwd.value=='')
  30.         {
  31.                    alert('The password should not be empty.');
  32.             mainform.pwd.focus();
  33.             return false;
  34.            }
  35.         return true;
  36. }


  37. </script>
  38. <form enctype="multipart/form-data" action="login.html" id="mainform" name="mainform" method="post">
  39. <body class="body" repeat-x #CCC;">

  40.      <div style="border:0px;margin:0px auto; padding:0px; width:800px;">

  41.     <table border=0 cellspacing="0">
  42.   <tr>
  43.     <td align='left'>username</td>
  44.   </tr>
  45.   <tr>
  46.     <td><input name="user" type="text" id="user" value="" /></td>
  47.   </tr>
  48.   <tr>
  49.     <td>password</td>
  50.   </tr>
  51.   <tr>
  52.     <td  align="left" valign="top"><input name="pwd" type="password" id="pwd" value="" /></td>
  53.   </tr>
  54.   <tr>
  55.     <td style="background:url(images/lg_07_2.gif);" align="center" valign="middle">
  56. <input type = 'submit' value = 'submit' onclick ='validate()' align='middle'></td>
  57.   </tr>
  58. </table>
  59. </div>
  60. </body>
  61. </form>
  62. </html>

复制代码

作者: robin.von    时间: 2011-3-16 09:25
捕捉不到的那个对话框试试用AutoIt去抓吧,这个对话框是通过SERVER验证以后再弹出的,SELENIUM貌似抓不到,我以前也碰到过,好像用AUTOIT可以抓到。
作者: casilin    时间: 2011-3-16 13:41
回复 6# robin.von


谢谢,我去试试~




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2