注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

无线时代辐射无穷

抓紧生宝宝,小心辐射

 
 
 

日志

 
 

Selenium RC:指南  

2008-10-21 08:33:22|  分类: XP-TDD |  标签: |举报 |字号 订阅

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

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 Files\Mozilla Firefox\firefox.exe"; IE浏览器的标准路径:"c:\Program Files\Internet Explorer\iexplore.exe".)

Unix/Linux:在这个指南中,要求安装Firefox,并且将FF的路径加到你的PATH环境变量中。注意,在Unix/Linux中我们激活"firefox-bin"目录,从而确保在这个路径下执行;同时不要忘记将Firefox libraries j加到你的 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操作系统下,想在Selenium命令中使用IE浏览器,你可以试下面的输入:

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

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

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

你正在用你选择的浏览器(*iexplore for Internet Explorer, *firefox for Firefox, or *opera for Opera)执行"getNewBrowserSession"命令,打开www.google.com网站。在窗口中输入命令行,会自动的将HTTP网页的请求发送给Selenium服务器,并被执行(在非交互模式下,你可以使用你喜欢的任何的自动化工具将HTTP请求发送到服务器上,而不用手工输入他们)。当你按下“Enter”,你可以看到关于你的请求的如下描述:

--->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都是不同的。

让我们试一下更多的命令-Google Search!我们将打开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,如果你手工在你的浏览器中输入那个URL,将会出现404错误页面,怎么回事那?

JavaSript自动测试的时候,Selenium服务器参与解决了一个难题,你自己写的Javascrīpt脚本不会在Google.com上执行,这是由于same origin policy(这是Mozilla website自己起草的,但是现代的Javascrīpt浏览器反对这个政策) 同源政策有更多的意义。你已将你的浏览器指向一个银行的网站,同时你打开了某些人的blog。

Javascrīpt允许从网站上读取信息,如你载入的网页上一些改动了的数值,恶意的bloger可以读取你银行的数据,更糟的是从新输入你银行的页面做一些其他的事情,他可以用欺骗你来获得他敏感的信息。同源政策表明Javascrīpt脚本允许只能阅读/修改来自相同源头的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上注入任意的Javascrīpt代码而不用以任何方式修改google.com。
  评论这张
 
阅读(412)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017