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

  • 相关阅读:
    【ybtoj】【Hash】回文子串
    Design Pattern:状态模式
    Design Pattern:装饰者模式
    Design Pattern:外观模式
    Design Pattern:适配器模式
    Design Pattern:模板方法模式
    Design Pattern:命令模式
    Design Pattern:观察者模式
    Design Pattern:复合模式
    Design Pattern:迭代器模式
  • 原文地址:https://www.cnblogs.com/wuzhiming/p/3438988.html
Copyright © 2011-2022 走看看