zoukankan      html  css  js  c++  java
  • 《零成本实现Web自动化测试--基于Selenium》 第五章 Selenium-RC

     一. 简介

     Selenium-RC可以适应更复杂的自动化测试需求,而不仅仅是简单的浏览器操作和线性执行。Selenium-RC能够充分利用编程语言来构建更复杂的自动化测试案例,例如读写文件、查询数据库和E-mail邮寄测试报告。

    当测试案例遇到selenium-IDE不支持的逻辑时,你应该首先想到Selenium-RC。Selenium-IDE不支持下面逻辑:

    • 条件判断;
    • 循环;
    • 日记记录和报告测试结果;
    • 错误处理,特别是预料之外的错误;
    • 数据库测试;
    • 测试案例组合;
    • 重复执行失败案例;
    • 测试案例依赖;
    • 测试失败时捕获屏幕快照。

    虽然这些任务不被Selenium锁直接支持,但是通过编程语言和特定语言的Selenium-RC客户端库文件都可以实现。

    二. Selenium-RC 基础

    1. Selenium-RC 工作原理

     首先,我们描述Selenium-RC组件是如何运转的,以及它们在测试案例运行过程中扮演什么角色。

    1.1 RC组件

    • Selenium Server,它负责启动和关闭浏览器,解释和运行从测试程序传来的Selenese命令,就像一个HTTP代理一样。截取和验证浏览器与待测应用(AUT)之间的HTTP消息;
    • 客户端库文件提供编程语言和Selenium-RC Server 之间的接口

    Selenium-RC的一个简单的架构图,如下所示:

    上图说明客户端库文件将命令传递给了Server,接着Server使用Selenium-Core的JavaScript命令,将Selenium命令传递给浏览器。浏览器会使用自带的JavaScript翻译器来执行Selenium命令。这意味着测试脚本中的Selenese操作和验证将被执行。

    1.2 Selenium Server

        Selenium Server从你的测试程序接受Selenium命令,翻译它们,想测试程序反馈运行这些测试案例的结果。

        在测试程序打开浏览器时(使用客户端库文件的API函数),RC Server 绑定Selenium Core 并自动将它嵌入到浏览器中。Selenium-Core 是一个JavaScript程序,实际上是一系列JavaScript函数,它们使用浏览器内置的JavaScript翻译器来翻译和执行Selenese命令。

        Server使用简单的HTTP GET/POST请求从你的测试程序中获取Selenese命令。这意味着你可以使用任何支持HTTP请求的编程语言来自动化基于浏览器的测试案例。

    1.3 客户端库文件

        客户端库文件提供编程接口,允许你使用自己编写的程序来运行Selenium命令。对于每一种支持的语言都有对应客户端文件。Selenium客户端库文件提供编程接口(API),例如:一系列函数,以便通过你的程序来运行Selenium命令。对于任何一种接口而言,都有对应的函数支持每一个Selenese命令。

         客户端库文件获取一条Selenese命令,并将它传递给Selenium Server,以便执行一个指定操作或者基于待测应用(AUT)进行测试。客户端库文件收到命令的执行结果,再将其传递给你的测试程序。程序接收到结果后,将它保存在变量中,接着报告成功还是失败。如果结果是医疗之外的失败,还能有针对性地采取正确措施。

        因此要创建测试程序,你只须使用客户端库文件的API来编写程序,程序会去运行一系列Selenium命令。如果你已经在Selenium-IDE中创建了一个Selenese测试脚本,可以用它来生成Selenium-RC代码。Selenium-IDE可以将它的Selenium命令,翻译成客户端驱动的API函数调用。

      2. Selenium-RC 架构

     <略过>

      3. Selenium-RC 安装

    从如下地址: http://seleniumhq.org/download ,下载Selenium-RC zip文件后,你会发现它包含很多子文件夹。这些文件夹中包含使用Selenium-RC所需要的一切组件。

    一旦你选择了一种工作语言,你需要:

    • 安装Selenium-RC服务器;
    • 使用特定语言的客户端驱动,来创建一个编译工程。

    Python脚本语言下Selenium-RC的自动化配置如下:

    Selenium-RC Python 2.7 环境配置

     

    三. Selenium-RC 使用

    1. 从Selenese 到测试程序

    试用Selenium-RC的主要任务就是将你的Selenese命令转为编程语言。下面是一个Python的例子:

    1.1. 测试脚本样例

    Command Target Value
    open /  
    type id=kw http://www.cnblogs.com/wuzhiming/
    clickAndWait id=su  
    assertTitle exact:http://www.cnblogs.com/wuzhiming/_百度搜索  

    1.2 Selenium转为编程代码

    文件->Export Test Case AS->Python 2 / unittest/ Remote Control

    导出代码如下:

    from selenium import selenium
    import unittest, time, re
    
    class baidu(unittest.TestCase):
        def setUp(self):
            self.verificationErrors = []
            self.selenium = selenium("localhost", 4444, "*chrome", "http://www.baidu.com/")
            self.selenium.start()
        
        def test_baidu(self):
            sel = self.selenium
            sel.open("/")
            sel.type("id=kw", "http://www.cnblogs.com/wuzhiming/")
            sel.click("id=su")
            sel.wait_for_page_to_load("10000")
            self.assertEqual(u"http://www.cnblogs.com/wuzhiming/_百度搜索", sel.get_title())
        
        def tearDown(self):
            self.selenium.stop()
            self.assertEqual([], self.verificationErrors)
    
    if __name__ == "__main__":
        unittest.main()

    2. 构建你的测试程序

    现在将距离说明如何使用Python语言来编写测试程序。这里有两项基本任务:

    (1). 通过Selenium-IDE产生你的测试脚本,并转换为编程语言,可能还需要加以修改;

    (2).写一个简单的主程序来执行这些脚本

    Pyunit 是使用Python时的测试框架。要学习Pyunit,请参看官方文档<http://docs.python.org/library/unittest.html>

    3. 学习Selenium-RC API

    a.启动浏览器

    代码如下:

            self.selenium = selenium("localhost", 4444, "*chrome", "http://www.baidu.com/")
            self.selenium.start()

    创建浏览器实例所需的参数如下:

    • Host
      • 该参数指明所在主机的IP地址。
    • Port
      • 该参数指明Server监听的TCP/ip端口,客户端将使用此端口来建立连接。
    • Browser
      • 指明希望使用的浏览器,是必选参数
    • URL
      • 该参数指明被测系统的基础URL,是必选参数

    b. 执行命令

    一旦你初始化了浏览器,并将其指定给一个变量(通常命名为“Selenium”)。你可以通过浏览器变量来调用相关办法,以便执行Selenese命令,例如,调用selenium对象的type方法。

    selenium.type("field-id","string to type")

    浏览器会进行一个输入操作,通过指定的定位器参数定位输入框,然后将指定的字符串输入。

    4. 报告测试结果

    如果使用Python客户驱动,HTMLTestRunner可以被用来产生测试报告。可以参考:

    http://tungwaiyip.info/software/HTMLTestRunner.html

  • 相关阅读:
    Spring基础知识
    Hibernate基础知识
    Struts2基础知识
    在eclipse里头用checkstyle检查项目出现 File contains tab characters (this is the first instance)原因
    java后台获取cookie里面值得方法
    ckplayer 中的style.swf 中的 style.xml 中的修改方法
    java hql case when 的用法
    Windows下Mongodb安装及配置
    Mongodb中经常出现的错误(汇总)child process failed, exited with error number
    Mac 安装mongodb
  • 原文地址:https://www.cnblogs.com/wuzhiming/p/3438988.html
Copyright © 2011-2022 走看看