selenium 学习(3)- selenium RC服务
最近在看TestNG,因为发现在学习selenium和junit的过程中,许多文章都指向了TestNG,并且在selenium的参数化时用TestNG更有用些,所以学习的进度慢了一些哦。
今天要总结有关selenium RC的服务。我想原理就不学了,暂时应该还用不上吧。主要围绕ant如何启动RC服务展开的学习。(如果网友查询到我的博客,不能以我编写的顺序学习)
- 命令行启动RC
首先在下载的RC包里,解压后找到selenium-server.jar,然后在命令行窗口里启动它,具体启动格式如下(中括号内为可选参数): java -jar selenium-server.jar [-interactive] [options] |
-port <nnnn>: selenium服务器使用的端口号(默认 4444) -timeout <nnnn>: 我们放弃前(超时)所等待的秒数 -interactive: 进入交互模式。参考教程获取更多信息 -multiWindow: 进入被测试网站都在单独窗口打开的模式,并且selenium支持frame. -forcedBrowserMode <browser>: 设置浏览器模式(例如,所有的会话都使用"*iexplore",不管给getNewBrowserSession传递什么参数) -userExtensions <file>: 指定一个被载入到selenium的JavaScript文件 -browserSessionReuse: 停止在测试间重新初始化和替换浏览器。 -alwaysProxy: 默认情况下,我们尽量少的进行代理;设置这个标志将会强制所有的浏览器通讯都通过代理 -firefoxProfileTemplate <dir>: 一般情况,我们在每次启动之前都生成一个干净的Firefox设置。您可以指定一个目录来让我们将您的设置拷贝过来,代替我们生成的。 -debug: 进入debug模式,会有更多的跟踪调试信息 -htmlSuite <browser> <startURL> <suiteFile> <resultFile>: 使用指定的浏览器(例如"*firefox")在指定的URL(例如"http://www.google.com"),运行一个单独的HTML Selenese (Selenium Core)测试套件然后立即退出。您需要指定HTML测试套件的绝对路径还有我们将会生成的HTML测试结果文件的路径。 -proxyInjectionMode: 进入代理注入模式,这个模式中selenium服务器作为进入测试程序的所有内容的代理服务器。在这个模式下,可以跨多个域访问,并且还支持如下附加参数: -dontInjectRegex <regex>: 附加的正则表达式,代理注入模式能够使用它决定是否进行注入 -userJsInjection <file>: 指定一个JavaScript文件,将它注入到所有页面中 -userContentTransformation <regex> <replacement>: 一个正则表达式,对所有被测HTML内容进行匹配;第二个string将会对替换所有匹配的内容。这个标志能够使用多次。一个简单的适合使用这个参数的例 子:如果你添加"-userContentTransformation https http"那么测试应用程序的HTML中的所有"https"字符串都会被替换为"http"。 另外,还支持两种Java系统属 性:-Dhttp.proxyHost 和 -Dhttp.proxyPort。使用Selenium服务器作为代理服务器,Selenium RC一般重载你的代理服务器配置。使用这个参数适合在使用Selenium服务器代理的同时使用你自己的代理服务器。使用代理服务器时这样配置: java -Dhttp.proxyHost=myproxy.com -Dhttp.proxyPort=1234 -jar selenium-server.jar 如果你的HTTP代理服务器需要验证,你还可以在http.proxyHost和http.proxyPort后面设置-Dhttp.proxyUser 和 -Dhttp.proxyPassword。 java -Dhttp.proxyHost=myproxy.com -Dhttp.proxyPort=1234 -Dhttp.proxyUser=joe -Dhttp.proxyPassword=example -jar selenium-server.jar |
目前在我看了,比较有用的参数可能就会使port,log(不过不知道为什么log不在以上的列表中),同时包括其后能在cmd窗口中查看log。
- Ant方式启动/停止RC
其实就是在build.xml文件中利用ant的task运行启动RC的命令。
在build.xml中插入以下蓝色部分内容,得到一个完整的build.xml文件:
加入了启动/停止RC的build.xml文件 |
<propertyname="build.class"value="build/class"/> <!<!-- START SERVER--> <property name="ARGS" value="-Dibm.stream.nio=true -log selenium.log -browserSideLog" /> <property name="lib" value="C:\selenium\selenium-remote-control-1.0.3\selenium-server-1.0.3" /> <target name="start-server"> <echo message="Starting server..." /> <java jar="${lib}/selenium-server.jar" fork="true" spawn="true"> <arg line="-timeout 30" /> <arg line="${ARGS}" /> </java> <echo message="Server is started." /> </target> <!-- STOP SERVER--> <target name="stop-server"> <!-- selenium server url--> <get taskname="selenium-shutdown" src="http://localhost:4444/selenium-server/ driver/?cmd=shutDownSeleniumServer" dest="result.txt" ignoreerrors="true" /> <echo taskname="selenium-shutdown" message="Errors during shutdown are expected" /> </target> <pathelementlocation="build/lib/selenium-java-client-driver.jar"/> <pathelementlocation="build/lib/junit-4.0.jar"/> <pathelementlocation="${build.class}"/> </classpath> <formattertype="xml"/> </junit> <includename="TEST-*.xml"/> </fileset> <reportformat="frames"todir="report"/> </junitreport> </target> </project> |
创建好后,
A. 运行ant start-server 启动服务。注意在启动服务后,不会像我们用命令行直接启动一样看到log,但参数中有 -log selenium.log ,就是说会将log重定向到selenium-server.jar文件所在的目录的selenium.log文件中。
B. 运行ant stop-server 关闭服务。如果关闭失败,可以通过之间关闭进程来管理部分,RC的进程在系统中是以java进程的形式存在的,就找到相应的java进程关闭即可。还有有种方式,通过网页关闭,网页地址如下:http://localhost:4444/selenium-server/driver/?cmd=shutDownSeleniumServer ,打开后显示“OKOK”,RC服务就被关闭掉了。
TAG: