服务器选项
当服务器启动时,命令行选项可以使用于改变默认的服务器行为。
回想一下,服务器是通过运行下面的命令行启动的。
$ java -jar selenium-server-standalone-<version-number>.jar
要查看选项的列表,运行服务器带有-h选项。
$ java -jar selenium-server-standalone-<version-number>.jar -h
你会看到所有服务器可以使用选项的列表,以及每个选项的简短描述。提供的描述并不总是足够的,因此我们提供了某些比较重要的选项的注释。
代理配置
如果你的AUT在一个需要授权的HTTP代理的后面,那么你应该使用下面的命令配置http.proxyHost,http.proxyPort,http.proxyUser和http.proxyPassword。
$ java -jar selenium-server-standalone-<version-number>.jar -Dhttp.proxyHost=proxy.com -Dhttp.proxyPort=8080 -Dhttp.proxyUser=username -Dhttp.proxyPassword=password
多窗口模式
如果你正在使用Selenium 1.0,你可以跳过这一节,因为多窗口模式是默认的行为。然而,在1.0版本之前,Selenium默认地运行测试中的应用程序在一个子帧模式,正如显示在这儿的。
某些应用程序不能正确地运行在子帧模式,需要被装载到顶级帧的窗口。多窗口模式选项允许AUT运行在各自的窗口,而不是默认的帧模式,这样它就可以拥有需要的顶级帧。
对旧的Selenium版本,你必须使用下面的选项显式地指定多窗口模式。
-multiwindow
自Selenium RC 1.0起,如果你想要在一个单一的帧运行你的测试(例如使用早期Selenium版本的标准模式),你可以向Selenium 服务器要求这个使用下面的选项。
-singlewindow
指定FIrefox配置文件
Firefox不会同时运行两个实例,除非你为每个实例是定各自的配置文件。Selenium 1.0和后面的版本,自动运行在一个各自的配置文件中,因此如果你正在使用Selenium 1.0,你可以跳过这一节。然而,如果你正在使用就的Selenium版本,或者如果你需要使用一个特殊的配置文件用于测试(诸如增加一个https证书或需要安装某些插件),你将需要显式地指定配置文件.
首先创建一个不同的Firefox配置文件,遵循下面的步骤。打开Windows的开始菜单,选择“运行...”,然后输入下面的命令:
firefox.exe -profilemanager
firefox.exe -P
使用这个对话框创建新的配置文件。那么当你运行Selenium服务器的时候,告诉它使用新的Firefox配置文件,使用服务器命令行选项firefoxProfileTemplate,和使用文件名称以及目录路径指定配置文件。
-firefoxProfileTemplate "path to the profile"
警告
确信放置你的配置文件在一个新的不同于默认的文件夹中。Firefox配置文件管理员工具会删除在文件夹中的所有文件,如果你删除一个配置文件,而不管是否它们是配置文件或不是。
有关Firefox配置文件的更多信息,可以在Mozilla的知识库中找到。
使用-htmlSuite在服务器中直接运行Selenese
你可以在Selenium服务器直接运行Selenese html文件,通过传递html文件到服务器的命令行。例如:
java -jar selenium-server-standalone-<version-number>.jar -htmlSuite "*firefox"
"http://www.google.com" "c:\absolute\path\to\my\HTMLSuite.html"
"c:\absolute\path\to\my\results.html"
这将自动启动你的HTML测试集,运行所有的测试并保存一个带有结果的良好的HTML报告。
注释
当适用这个选项时,服务器将启动测试并等待指定的秒数去完成测试;如果测试没有在指定的时间内完成,命令将退出,并带有一个非零的退出代码和不会生成结果文件。
命令行很长,因此当输入时要小心。注意这要求你传递一个HTML Selenese测试集,而不是一个单一的测试。同样需要知道-htmlSuite选项与-interactive是不兼容的,你不能同时运行两者。
Selenium服务器日志
服务器端日志
当启动Selenium服务器时,可以使用-log选项去记录Selenium服务器报告的有价值的信息到一个文本文件。
java -jar selenium-server-standalone-<version-number>.jar -log selenium.log
日志文件比标准的控制台文件更冗长(它包括调试级别的日志消息)。日志文件包括日志器名称,以及日志这个消息的线程的ID编号。例如:
20:44:25 DEBUG [12] org.openqa.selenium.server.SeleniumDriverResourceHandler -
Browser 465828/:top frame1 posted START NEW
消息格式是
TIMESTAMP(HH:mm:ss) LEVEL [THREAD] LOGGER - MESSAGE
消息可能是多行的
浏览器端日志
在浏览器端的JavaScript(Selenium内核)也日志重要的消息;在许多情况下,这些可能对终端用户来说比正常的Selenium服务器日志更有用的。要存取浏览器日志,传递-browserSideLog参数给Selenium服务器。
java -jar selenium-server-standalone-<version-number>.jar -browserSideLog
要日志浏览器端的日志到一个文件,-browserSideLog必须与-log参数组合使用。
给指定的浏览器指定路径
你可以为Selenium RC指定浏览器的路径。这是有用的,如果你有相同浏览器的不同版本,并且希望使用特定的一个。同样,这被使用于允许你的测试运行在Selenium RC不直接知吃的浏览器。当指定运行模式,使用带有浏览器可执行文件的完全路径的*custom限定符:
*custom <到浏览器的路径>
Selenium RC构架
注释
此主题试图解释Selenium RC后面的技术实现。对Selenium用户来说,了解这个不是必要的,但可能对理解某些在未来使用中遇到问题的理解是有帮助的。
详细地理解Selenium RC服务器如何工作,为什么使用代理注入和提升特权模式,必须首先理解同源策略。
同源策略
Selenium面对的主要限制是同源策略。这个安全限制适用于市面上的每个浏览器,它的目标是确保一个站点的内容永远不能被另外一个站点的脚本访问。同源策略强制任何在浏览器中装载的代码只能操作在Web站点的域。它不能执行在另外一个站点的函数。例如,浏览器装载JavaScript代码,当它装载www.mysite.com时,它不能对www.mysite2.com–even,如果它是你的另外一个站点,运行装载的代码。如果这是可能的,放置在任何你打开的站点的脚本就能够读取有关你的银行帐号的信息,如果你有一个打开在其他选项页的帐号页面。这被称为XSS(跨站点脚本)。
在此策略下,Selenium内核(和它的使所有魔法发生的JavaScript命令)必须放置在测试中的应用程序相同的源。
从历史上来看,Selenium内核有这个问题的限制,因为它使用JavaScript实现。然而,Selenium RC不受同源策略的限制。使用Selenium服务器作代理可以避免这个问题。基本上,它告诉浏览器,浏览器是工作在服务器提供的单一“伪”站点。
注释
你可以在有关同源策略和XSS的Wikipedia 页,找到关于这个主题的附加信息。
策略注入
Selenium用于避免同源策略的第一个方法是策略注入。在策略注入模式,Selenium服务器扮演做一个,在浏览器和测试中的应用程序之间的,配置客户HTTP代理。它然后在一个虚构的URL下伪装AUT。
[1] 代理是在两个部分之间传递皮球的第三人。它承担交付AUT到浏览器的“Web服务器”的作用。是一个代理给予Selenium服务器可以对AUT的真实URL进行“撒谎”的能力。
[2] 浏览器被启动,带有一个设置为localhost:4444作为HTTP代理的配置文件,这就是为什么任何浏览器做出的HTTP请求将通过Selenium服务器,和响应也通过它,而不是来自真实的服务器
此处是一个架构图。
当测试集以你喜欢的语言启动时,下面的过程会发生:
- 1、客户驱动器建立一个与Selenium服务器的连接。
- 2、Selenium RC服务器启动一个浏览器(或重用一个老的),带有一个URL,那个注入Selenium内核JavaScript进入装载浏览器的Web页面。
- 3、客户驱动程序传递一个Selenese命令到服务器。
- 4、服务器解释这个命令,然后触发相应的JavaScript执行,去执行在浏览器中的命令。
- 5、Selenium-Core指示浏览器按第一个指令行动,典型地是打开一个AUT页面。
- 6、浏览器接受这打开的请求,并从Selenium RC服务器请求Web站点的内容(被设置做浏览器使用的HTTP代理)。
- 7、Selenium RC服务器与Web服务器通讯请求页面,一旦接受 ,它将发送这个页面到浏览器,并掩饰来源让浏览器以为页面来自同一个服务器(这允许Selenium-Core遵循同源策略)。
8、浏览器接受Web页,并绘制在为它保留的frame/window中。
提升权限
这个方法的流程非常类似于代理注入(Proxy Injection),主要的差异是浏览器以一个特殊的称之为提升权限的模式启动,那允许Web站点执行一般不许可的事情(如XSS,或填充文件上传输入域,以及对Selenium非常有用的任何事情)。通过使用这些浏览器模式,Selenium Core能够直接打开AUT和读取/与它的内容交互,而无须通过Selenium RC服务器传递整个AUT。
此处是一个架构图。
当测试集以你喜欢的语言启动时,下面的过程会发生:
- 1、客户驱动器建立一个与Selenium服务器的连接。
- 2、Selenium RC服务器启动一个浏览器(或重用旧的一个),带有一个装载Selenium-Core进入页面的URL。
- 3、Selenium-Core得到第一个来自客户驱动器的指令(通过另外一个对Selenium RC服务器做出的HTTP请求)。
- 4、Selenium-Core指示浏览器按第一个指令行动,典型地是打开一个AUT页面。
- 5、浏览器接受打开请求,并向Web服务器请求此页面。一旦浏览器接受此Web页面,就绘制在为它保留的frame/window中。
© Copyright 2008-2012, Selenium Project. Last updated on Feb 02, 2012.