(Selenium IDE/Core/Core HTA/RC)javascript
Selenium html脚本,又称为Selenese,结构清晰简单:html
是一个HTML Table:java
Test02 | ||
open | http://www.google.com/ | |
type | q | ddddddd |
clickAndWait | btnG | |
assertText | sd | Web |
HTML Table 由三列构成:程序员
First Column: Selenium command,命令或断言。web
Second Column: Target of command,命令或断言的目标(target)。这里能够用多种受支持的组件定位符中的一种来指定目标。一般使用的是组件的 ID 或名称,但 XPath 和 DOM 定位符也是受支持的;shell
Third Column: Optional parameter,用于为命令或断言指定参数的值。例如,当使用 type 命令时,这一列可能就是一个文本域所指望的值。浏览器
在selenium core的发布包里,也有此reference,下文中即将提到。服务器
对于自动化测试来讲,任何录制/回放工具获得的脚本,都是要进行修改的,这样可以增长脚本的健壮性。将脚本存为html文件。最终的脚本也要至少回放一遍经过才能算完成,在Selenium IDE中,点播放按钮观看放映。session
Selenium Core位于:app
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文件夹下。
以上是一个官方版TestSuite的摘录,参照例子,组织本身的Test Cases,写成TestSuite,放入tests文件夹,即可在浏览器中执行(适用于各类浏览器),例 如:http://localhost:8080/selenium/core/TestRunner.html?test=../tests /myTestSuite.html
值得注意的是:Selenium Core的tests里包含了不少Selenium Command的例子,值得好好研习。
Core HTA 也在Selenium发布包内,仅适用于IE浏览器,不须要远程安装,也不须要Java支持。在命令行里执行命令便可:
C:\selenium\core>TestRunner.hta "test=..%2Ftests%2FTestSuite.html&auto=true&close=true&resultsUrl=results.html&save=true"
根据实际状况修改几个参数,即可执行本身的TestSuite了。
下载Selenium RC 包:
http://selenium-rc.openqa.org/
是一个Zip包,里面提供了支持各类语言的驱动。核心的是 selenium-server.jar 这个jar包,在下文介绍交互模式(Interactive Mode)时用到的就是它。
本指南将会告诉你如何从命令行启动Selenium server,如何在交互式模式下使用Server。这里假设你已经熟悉在命令行执行程序。最后,咱们将说明如何写简单的test来实现咱们已在交互式模式下实现的功能。
Selenium Server 是用Java语言编写的,须要在JRE 1.5.0或者更高的版本下运行。也许你已经安装JRE,在命令行中执行:
java -version
你能够看到以下的关于你安装的java的版本信息:
相反,若是你看到的是错误信息,你须要安装JRE,或者是将它填加到你的PATH环境变量中去。
同时你须要确保你的安装的浏览器也支持这些,例如:
Windows
若是你用的是Windows XP 或者是Windows2003,你可使用IE 浏览器,或者安装Mozilla Firefox 或者Opera浏览器。
若是你是用的是Windows2000,若是想使用IE浏览器,你就须要安装reg.exe, 可是若是使用Firefox不须要。咱们建议(但不是必须)将你的浏览器执行路径加到你的PATH环境变量中(若是你不知道如何将你的浏览器安装目录加到 PATH中,那么你就必须将你的浏览器安装到标准路径下:Firefox的标准路径:"c:\Program Files\Mozilla Firefox\firefox.exe";IE浏览器的标准路径:"c:\Program Files\Internet Explorer\iexplore.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环境变量。
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都是不一样的。
这是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”。
当你执行你的测试的时候,你也许会注意到你的浏览器种的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的例子:
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