zoukankan      html  css  js  c++  java
  • Selenium 使用介绍

    (Selenium IDE/Core/Core HTA/RC)

    工具特色

    1. 开发人员,测试人员均可使用的一款测试工具
    2. 支持IE、FireFox等浏览器;测试环境可以和程序代码一同部署于应用服务器下,也可单独搭建。
    3. 用于测试驱动开发TDD、Smoke Test、Regression、Acceptance testing等
    4. 免费、脚本简单(HTML files)、不需要额外的环境
    参考Selenium网站:
    http://www.openqa.org/
    http://selenium.openqa.org/
    我应该使用哪种Selenium工具(中文版)?
    http://wiki.javascud.org/display/SEL/Which+Selenium+Tool+Should+I+Use 

     

    从Selenium IDE 开始

    安装

    1. 安装Firefox
    2. 下载Selenium插件:http://selenium-ide.openqa.org/ 
    3. 将插件拷贝至Firefox/extensions目录下(通常为C:Program FilesMozilla Firefoxextensions)
    4. 重启Firefox,会执行自动安装。
    5. 在“Tools”下能够看到“Selenium IDE”插件安装完毕。

    录制

    参考录制的小电影:
    http://wiki.openqa.org/download/attachments/400/Selenium+IDE.swf

     

    录制好的脚本

    Selenium html脚本,又称为Selenese,结构清晰简单:

     

     <html>
     <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
     <title>Becky02</title>
     </head>
     <body>
     <table cellpadding="1" cellspacing="1" border="1">
     <thead>
     <tr><td rowspan="1" colspan="3">Test02</td></tr>
     </thead><tbody>
     <tr>
         <td>open</td>
         <td>http://www.google.com/</td>
         <td></td>
     </tr>
     <tr>
         <td>type</td>
         <td>q</td>
         <td>ddddddd</td>
     </tr>
     <tr>
         <td>clickAndWait</td>
         <td>btnG</td>
         <td></td>
     </tr>
     <tr>
         <td>assertText</td>
         <td>sd</td>
         <td>Web</td>
     </tr>
     </tbody></table>  </body>  </html>

     

    是一个HTML Table:

    Test02
    open http://www.google.com/  
    type q ddddddd
    clickAndWait btnG  
    assertText sd Web

     

    HTML Table 由三列构成:

    First Column: Selenium command,命令或断言。

    Second Column: Target of command,命令或断言的目标(target)。这里可以用多种受支持的组件定位符中的一种来指定目标。通常使用的是组件的 ID 或名称,但 XPath 和 DOM 定位符也是受支持的;

    Third Column: Optional parameter,用于为命令或断言指定参数的值。例如,当使用 type 命令时,这一列可能就是一个文本域所期望的值。

     

    参考对于Selenium的命令,请参考网站资源:
    http://release.openqa.org/selenium-core/0.8.0/reference.html

    在selenium core的发布包里,也有此reference,下文中即将提到。

    对于自动化测试来说,任何录制/回放工具得到的脚本,都是要进行修改的,这样能够增加脚本的健壮性。将脚本存为html文件。最终的脚本也要至少回放一遍通过才能算完成,在Selenium IDE中,点播放按钮观看放映。

     

    Selenium Core使工作更有条理

     

    下载安装

    Selenium Core位于:

    http://selenium-core.openqa.org/

    它是一个zip包,需要应用服务器的支持,此处对于应用服务器的部署等省略,将zip包放入待测试的Web程序下,启动应用服务器,打开 URL:http://localhost:8080/selenium/ ,进入 “Selenium TestSuite”。TestSuite用于将具有类似功能的一些测试用例编成一组,以便它们按顺序运行。TestSuite和Test Cases一样,都是用简单的 HTML 表编写的。Selenium 执行的缺省TestSuite的名称是 TestSuite.html,位于tests文件夹下。

     


    <body onload="filterTestsForBrowser()">

        <table id="suiteTable"    cellpadding="1"
               cellspacing="1"
               border="1"
               class="selenium">
            <tbody>
            <tr><td><b>Test Suite</b></td></tr>
                <tr unless="browserVersion.isSafari" ><td><href="./events/TestMouseEvents.html">TestMouseEvents</a></td></tr>
                <tr><td><href="./TestBrowserVersion.html">TestBrowserVersion</a></td></tr>
                <tr><td><href="./TestJavaScriptAttributes.html">TestJavaScriptAttributes</a></td></tr>
                <tr unless="browserVersion.isKonqueror || browserVersion.isSafari"><td><href="./events/TestKeyEvents.html">
    TestKeyEvents</a></td></tr>
                <tr unless="browserVersion.isKonqueror || browserVersion.isSafari"><td><href="./TestVisibility.html">TestVisibility</a></td></tr>  
                <tr><td><href="./TestFramesOpen.html">TestFramesOpen</a></td></tr>
                <tr><td><href="./TestFramesNested.html">TestFramesNested</a></td></tr>
    <!--更多省略,请自行阅读文档-->

     

    以上是一个官方版TestSuite的摘录,参照例子,组织自己的Test Cases,写成TestSuite,放入tests文件夹,便可在浏览器中执行(适用于各种浏览器),例 如:http://localhost:8080/selenium/core/TestRunner.html?test=../tests /myTestSuite.html

    值得注意的是:Selenium Core的tests里包含了很多Selenium Command的例子,值得好好研习。

    Selenium Core的不足之处

    1. 它需要和应用同时部署于应用服务器之下,在有些项目中并不方便操作。
    2. 它不能将任何测试结果写到磁盘上(因为它是用javascript写的,它不允许向磁盘写数据),当然你可以将测试结果发送到另外一台服务器保存,这就是下文即将介绍的Selenium Core HTA 和 Selenium RC。

    Selenium Core HTA

     

    Core HTA 也在Selenium发布包内,仅适用于IE浏览器,不需要远程安装,也不需要Java支持。在命令行里执行命令即可:

     

    C:seleniumcore>TestRunner.hta "test=..%2Ftests%2FTestSuite.html&auto=true&close=true&resultsUrl=results.html&save=true"

     

    根据实际情况修改几个参数,便可执行自己的TestSuite了。

     

    Selenium-RC使用介绍
     
    参考http://blog.chinaunix.net/u/29273/showart_280459.html
    本篇文章部分转载自 凤凰印记 的 BLOG,地址如上,略做修改,应该是Selenium RC官方参考手册的中文翻译版本:
    原版(英文):http://selenium-rc.openqa.org/tutorial.html

     

    Selenium Remote Control:指南

    下载Selenium RC 包:

    http://selenium-rc.openqa.org/

    是一个Zip包,里面提供了支持各种语言的驱动。核心的是 selenium-server.jar 这个jar包,在下文介绍交互模式(Interactive Mode)时用到的就是它。

     

    本指南将会告诉你如何从命令行启动Selenium server,如何在交互式模式下使用Server。这里假设你已经熟悉在命令行执行程序。最后,我们将说明如何写简单的test来实现我们已在交互式模式下实现的功能。

     

    一些准备:JRE1.5+ 和 浏览器要求

    Selenium Server 是用Java语言编写的,需要在JRE 1.5.0或者更高的版本下运行。也许你已经安装JRE,在命令行中执行:

    java -version

    你可以看到如下的关于你安装的java的版本信息:

    java version "1.5.0_07"
    Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_07-b03)
    Java HotSpot(TM) Client VM (build 1.5.0_07-b03, mixed mode)

    相反,如果你看到的是错误信息,你需要安装JRE,或者是将它填加到你的PATH环境变量中去。

    同时你需要确保你的安装的浏览器也支持这些,例如:


    Windows

    如果你用的是Windows XP 或者是Windows2003,你可以使用IE 浏览器,或者安装Mozilla Firefox 或者Opera浏览器。

    如果你是用的是Windows2000,如果想使用IE浏览器,你就需要安装reg.exe, 但是如果使用Firefox不需要。我们建议(但不是必须)将你的浏览器执行路径加到你的PATH环境变量中(如果你不知道如何将你的浏览器安装目录加到 PATH中,那么你就必须将你的浏览器安装到标准路径下:Firefox的标准路径:"c:Program FilesMozilla Firefoxfirefox.exe";IE浏览器的标准路径:"c:Program FilesInternet Exploreriexplore.exe")


    Unix/Linux

    在这个指南中,要求安装Firefox,并且将它的路径加到你的PATH环境变量中。注意,在Unix/Linux中我们激活"firefox- bin" 目录,从而确保在这个路径下执行;同时不要忘记将Firefox libraries 加到你的 LD_LIBRARY_PATH中。如果需要,我们可以通过shell脚本激活firefox(例如:"firefox" or "run-mozilla.sh")那样的话知道你关闭这个服务器的时候才可以结束Firefox浏览器。


    Mac OS X

    对于 Mac OS X,只要在你的/Applications目录下,安装Firefox.app就够了。注意:为了精确控制你的浏览器,我们需要激活 Applications/Firefox.app/Contents/MacOS 目录下的Firefox内嵌的执行程序(firefox-bin);如果你的浏览器的安装位置不在那,你需要将你当前的内嵌位置加到你的PATH路径下, 作为你的DYLD_LIBRARY_PATH环境变量。

    交互模式:Interactive Mode

    Selenium服务器的“交互模式”是一种不需要任何代码的原型测试,因此有必要对初学者介绍Selenium Remote Control。在交互模式下,你可以在Selenium 服务器窗口中输入一行行的命令,在工作窗口的某个位置中立刻会执行你命令的结果。通常你可以选用你喜欢的语言编写你的测试代码,整个过程都是完全自动化 的。

    确保Java安装正常,通过命令行的方式用如下的命令来启动你的Selenium Server:

    java -jar selenium-server.jar -interactive

    这个命令将启动Selenium服务器,并允许你在命令窗口输入命令。在一些登录信息后边,你应该看到如下的信息:

    Entering interactive mode... type Selenium commands here (e.g: cmd=open&1=http://www.yahoo.com)

    让我们开始学习Selenium 服务器,第一个命令是打开浏览器,在Windows操作系统下,在命令窗口下试试输入下面的命令:

    cmd=getNewBrowserSession&1=*iexplore&2=http://www.google.com

    如果你想使用FireFox浏览器,你可以试如下的命令:

    cmd=getNewBrowserSession&1=*firefox&2=http://www.google.com

    这句话的意思是:执行getNewBrowserSession命令,选择一个浏览器(*iexplore for Internet Explorer, *firefox for Firefox, or *opera for Opera)打开www.google.com网站。在窗口中输入这条命令,会自动的将HTTP网页的请求发送给Selenium服务器,你可以看到关于 你的请求的如下描述:

    --->Requesting http://localhost:4444/selenium-server/driver?cmd=getNewBrowserSession&1=*firefox&2=http://www.google.com

    如果一切正常,你将会发现在你选择的浏览器中打开了一个新的窗口,回到Selenium服务器窗口中,你会发现如下的信息:

    Got result: OK,260113 on session 260113

    (如果没有以上信息,请参考故障指南

    消息的第一部分“Got result: OK”表示你的请求成功,第二部分,是Session 的ID,每次执行"getNewBrowserSession" 命令时,Session的ID都是不同的。

     

    在我的机器上的CMD窗口,蓝色是我输入的,其他是LOG
    D:seleselenium-remote-control-0.9.2-distselenium-remote-control-0.9.2seleniu
    m-server-0.9.2>java -jar selenium-server.jar -interactive
    15:30:51.132 INFO - Java: Sun Microsystems Inc. 1.5.0_04-b05
    15:30:51.132 INFO - OS: Windows XP 5.1 x86
    15:30:51.132 INFO - v0.9.2 [2006], with Core v0.8.3 [1879]
    15:30:51.382 INFO - Version Jetty/5.1.x
    15:30:51.397 INFO - Started HttpContext[/,/]
    15:30:51.397 INFO - Started HttpContext[/selenium-server,/selenium-server]
    15:30:51.397 INFO - Started HttpContext[/selenium-server/driver,/selenium-server
    /driver]
    15:30:51.475 INFO - Started SocketListener on 0.0.0.0:4444
    15:30:51.475 INFO - Started org.mortbay.jetty.Server@1cb25f1
    Entering interactive mode... type Selenium commands here (e.g: cmd=open&1=http:/
    /www.yahoo.com)
    cmd=getNewBrowserSession&1=*iexplore&2=http://www.google.com
    15:31:23.341 INFO - ---> Requesting http://localhost:4444/selenium-server/driver
    ?cmd=getNewBrowserSession&1=*iexplore&2=http://www.google.com
    15:31:23.528 INFO - Checking Resource aliases
    15:31:23.528 INFO - Command request: getNewBrowserSession[*iexplore, http://www.
    google.com] on session null
    15:31:24.153 INFO - Launching session 683528
    15:31:24.262 INFO - Backing up registry settings...
    15:31:25.528 INFO - Modifying registry settings...
    15:31:26.012 INFO - Launching Internet Explorer...
    15:31:50.786 INFO - Allocated session 683528 for http://www.google.com
    15:31:50.817 INFO - Got result: OK,683528 on session 683528
    cmd=open&1=http://www.google.com/&sessionId=683528
    15:41:46.837 INFO - ---> Requesting http://localhost:4444/selenium-server/driver
    ?cmd=open&1=http://www.google.com/&sessionId=683528
    15:41:46.853 INFO - Command request: open[http://www.google.com/, ] on session 6
    83528
    15:41:47.354 INFO - Got result: OK on session 683528
    cmd=type&1=q&2=qqqqqq&sessionId=683528
    15:42:33.186 INFO - ---> Requesting http://localhost:4444/selenium-server/driver
    ?cmd=type&1=q&2=qqqqqq&sessionId=683528
    15:42:33.202 INFO - Command request: type[q, qqqqqq] on session 683528
    15:42:33.233 INFO - Got result: OK on session 683528

     

    这是IE相应的快照:

     

     

     

    让我们试一下更多的命令:我们将打开Google的网站,在命令窗口中输入下面的命令,并且将ID换成你运行"getNewBrowserSession"时获得的ID。


    cmd=open&1=http://www.google.com/webhp&sessionId=260113

    当执行完这个命令后,在你的浏览器窗口的下方将会打开google.com页面。(The /webhp 确保我们在www.google.com网站;否则,我们需要通过某个国家的Google服务器间接的访问Google, 例如., www.google.fr.)

     

    现在Google已经被打开了,我们可以试着在Search Box中输入一些字段,在Selenium 服务器窗口命令中输入:


    cmd=type&1=q&2=hello world&sessionId=260113

    同样,不要忘记将你的Session ID换成你获得的ID,如果一切按计划执行,你将会在google的search对话框中看到“hello world”,现在让我们开始查询:


    cmd=click&1=btnG&sessionId=260113

    现在在浏览器中你可以看到查询的结果,你可以通过许多Selenium命令在浏览器中自动执行手工任务,对于一些特殊的命令,你可以在 Openqa的网站上查询Selenium Core部分,或者查看我们客户端驱动的相关资料(Java, .NET, Perl, PHP, Python or Ruby).

    接下来我们想做的事情可能是在页面上读出一些我们想要的信息, 例如,让我们在当前页面上找到一些HTML的标题,如下:

    cmd=getTitle&sessionId=260113

    浏览器将会返回我们载入的HTML页面的标题:

    Got result: OK,hello world - Google Search on session 260113

    现在这些交互模式已经够了;让我们开始写一些代码!但是在我们开始前,让我们关掉我们启动的浏览器。输入如下的命令:

    cmd=testComplete&sessionId=260113

    输入这些命令后,你的浏览器窗口将会自动关闭,想要关掉Selenium服务器,输入“quit”或者只要按下“Ctrl+C”。

     

    The Same Origin Policy 同源策略

    当你执行你的测试的时候,你也许会注意到你的浏览器种的URL是:

    http://www.google.com/selenium-server/RemoteRunner.html?sessionId=260113

    这个不是一个普通的URL,因为在www.google.com上并没有这个URL,如果你手工在你的浏览器中输入地址,将会出现404错误页面,怎么回事那?

    JavaSript自动测试的时候,Selenium服务器参与解决了一个难题,你自己写的JavaScript脚本不会在Google.com上 执行,这是由于Same Origin Policy,同源策略使得JavaScript脚本允许只能阅读/修改来自相同源头的HTML。

    这给Selenium自动测试带来了很大问题,如果你写了一个设置测试google.com的.js代码,同源策略拒绝你的.js文件在 google.com上运行;相反,你应该在google.com上安装那个.js文件来使它运行,我们没有权利这样做,即使有,这样做也会引起争议。

    Selenium Server便应运而生,在你用"getNewBrowserSession"自动开启的浏览器中,.Selenium Server如同是客户端配置的代理(client-configured proxy)。尤其,他将你的浏览器配置成和浏览器相关的使用Selenium Server代理。

    代理通常会捕捉你在HTML页面上的行为,如果页面没有找到,将会报告该页不存在。但是Selenium Server是个很不同的代理,当浏览器通过包含"/selenium-server/"的代理在URL中请求某个页面时,Selenium Server不会单纯的在远程服务器上取回该页,而是自动的返回它自己的页面。在某种意义上,这使得浏览器认为远程服务器上包含这个页面,这样我们就可以 在google.com上注入任意的JavaScript代码而不用以任何方式修改google.com。

     

    通过程序运行

    以上介绍了一点原理和基本的使用方法。很显然,打开一个cmd窗口,一行一行的输入命令,是令人崩溃的事情,并且命令行看起来很不可爱。Selenimu RC的魅力就在于,可以通过程序来实现这样的测试:来看一个Java的例子:

     

    import com.thoughtworks.selenium.*;
    import junit.framework.*;

    public class GoogleTest extends TestCase {
        private Selenium browser;
        public void setUp() {
            browser = new DefaultSelenium("localhost",
                4444"*firefox""http://www.google.com");
            browser.start();
        }
        
        public void testGoogle() {
            browser.open("http://www.google.com/webhp?hl=en");
            browser.type("q""hello world");
            browser.click("btnG");
            browser.waitForPageToLoad("5000");
            assertEquals("hello world - Google Search", browser.getTitle());
        }
        
        public void tearDown() {
            browser.stop();
        }
    }

     

    SetUp( )函数,就是交互模式中的

    cmd=getNewBrowserSession&1=*firefox&2=http://www.google.com

    命令。

     

    testGoogle( ) 函数,更不需要程序员亲自动手编写,Firefox 的 Selenium IDE 插件,可以自动将Selenium html脚本,转换成各种语言(Options->Format)。

     

     

    就是这么简单,规划测试用例,录test cases,修修改改,贴到代码里面,还需要程序员做什么呢?



    Source URL: http://www.blogjava.net/becky/archive/2009/02/09/183471.html

  • 相关阅读:
    错误:The columns and the margins do not fit the page width.
    jasperreport使用动态jason数据源
    DynamicReport使用XML数据源+ireport的.jxml文件作为模板
    Report bands中文版
    iReport 使用json 数据源
    bat设置java环境变量
    解决DynamicReports中含有中文pdf版本不显示
    vba实现excel二级联动多选功能
    打字游戏 C语言
    fpga 任意分频 奇偶数 分频
  • 原文地址:https://www.cnblogs.com/hua-an/p/5009981.html
Copyright © 2011-2022 走看看