您的位置:软件测试 > 开源软件测试 > 开源功能测试工具 > Selenium
利用Selenium自动化web测试
作者:网络转载 发布时间:[ 2016/6/15 16:19:26 ] 推荐标签:Selenium 功能测试 自动化测试

  对于上载/下载窗口,好是处理而不是跳过它们。为了避免 Selenium 的局限性,一种建议是使用 Java 机器人 AutoIt 来处理文件上载和下载问题。AutoIt 被设计来自动化 Window GUI 操作。它可以认识大多数 Window GUI,提供很多 API,并且很容易转换为 .exe 文件,这样的文件可以直接运行或者在 Java 代码中调用。清单 14 演示了处理文件上载的脚本。这些脚本的步骤是:
  根据浏览器类型确定上载窗口标题。
  激活上载窗口。
  将文件路径放入编辑框中。
  提交。
  清单 14. 处理上载的 AutoIt 脚本
  ;first make sure the number of arguments passed into the scripts is more than 1
  If $CmdLine[0]<2 Then Exit EndIf
  handleUpload($CmdLine[1],$CmdLine[2])
  ;define a function to handle upload
  Func handleupload($browser, $uploadfile)
  Dim $title                          ;declare a variable
  ;specify the upload window title according to the browser
  If $browser="IE" Then                  ; stands for IE;
  $title="Select file"
  Else                                 ; stands for Firefox
  $title="File upload"
  EndIf
  if WinWait($title,"",4) Then ;wait for window with
  title attribute for 4 seconds;
  WinActivate($title)                  ;active the window;
  ControlSetText($title,"","Edit1",$uploadfile)   ;put the
  file path into the textfield 
  ControlClick($title,"","Button2")                ;click the OK
  or Save button
  Else
  Return False
  EndIf
  EndFunc
  在 Java 代码中,定义一个函数来执行 AutoIt 编写的 .exe 文件,并在单击 browse 之后调用该函数。
  清单 15. 执行 AutoIt 编写的 .exe 文件
  public void handleUpload(String browser, String filepath) {
  String execute_file = "D:\scripts\upload.exe";
  String cmd = """ + execute_file + """ + " " + """ + browser + """
  + " " + """ + filepath + """; //with arguments
  try {
  Process p = Runtime.getRuntime().exec(cmd);
  p.waitFor(); //wait for the upload.exe to complete
  } catch (Exception e) {
  e.printStackTrace();
  }
  }
  清单 16 是处理 Internet Explorer 中下载窗口的 AutoIt 脚本。Internet Explorer 和 Firefox 中的下载脚本各不相同。
  清单 16. 处理 Internet Explorer 中下载的 AutoIt 脚本
  If $CmdLine[0]<1 Then Exit EndIf
  handleDownload($CmdLine[1])
  Func handleDownload($SaveAsFileName)
  Dim $download_title="File Download"
  If WinWait($download_title,"",4) Then
  WinActivate($download_title)
  Sleep (1000)
  ControlClick($download_title,"","Button2","")
  Dim $save_title="Save As"
  WinWaitActive($save_title,"",4)
  ControlSetText($save_title,"","Edit1", $saveAsFileName)
  Sleep(1000)
  if FileExists ($SaveAsFileName) Then
  FileDelete($SaveAsFileName)
  EndIf
  ControlClick($save_title, "","Button2","")
  Return TestFileExists($SaveAsFileName)
  Else
  Return False
  EndIf
  EndFunc
  AutoIt 脚本很容易编写,但是依赖于浏览器类型和版本,因为不同的浏览器和版本中,窗口标题和窗口控件类是不相同的。
  如何验证警告/确认/提示信息
  对于由 window.alert() 生成的警告对话框,使用 selenium.getAlert() 来检索前一操作期间生成的 JavaScript 警告的消息。如果没有警告,该函数将会失败。得到一个警告与手动单击 OK 的结果相同。
  对于由 window.confirmation() 生成的确认对话框,使用 selenium.getConfirmation() 来检索前一操作期间生成的 JavaScript 确认对话框的消息。默认情况下,该函数会返回 true,与手动单击 OK 的结果相同。这可以通过优先执行 chooseCancelOnNextConfirmation 命令来改变。
  对于由 window.prompt() 生成的提示对话框,使用 selenium.getPromt() 来检索前一操作期间生成的 JavaScript 问题提示对话框的消息。提示的成功处理需要优先执行 answerOnNextPrompt 命令。
  JavaScript 警告在 Selenium 中不会弹出为可见的对话框。处理这些弹出对话框失败会导致异常,指出没有未预料到的警告。这会让测试用例失败。

上一页12345下一页
软件测试工具 | 联系我们 | 投诉建议 | 诚聘英才 | 申请使用列表 | 网站地图
沪ICP备07036474 2003-2017 版权所有 上海泽众软件科技有限公司 Shanghai ZeZhong Software Co.,Ltd