`
gq913
  • 浏览: 169061 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

在持续集成系统中使用Selenium-RC

阅读更多

本页面是关于在一个持续集成的系统中使用 Selenium-RC - 通过命令行、Ant 或者 TestNG 来运行 Selenium 测试。

首先,我们收集信息。然后我们把它们合理的整理好。关键问题是有很多种方式启动测试并且收集结果,  所以你不得不配合好你所使用的工具 (ANT, TestNG, CC, ...)

如此使用 Selenium-RC 就需要了解很多事情:

  • Selenium 服务器 (selenium-server.jar) 是实际上启动 Web 浏览器的程序。这非常重要,因为如果你想通过命令行参数传递参数给浏览器,你就要通过改变服务器的环境来做。
  • 使用 Xvfb (X Windows Virtual Frame Buffer):如果你想让 Selenium 运行在 Unix 服器上 - 而不需要使用 X Windows 显示 - 或者你不想看到 Web 浏览器弹出,使用 xvfb。这是一个仅运行在内存里面的 X Server。

ANT

启动服务器用的 target : 

<java jar="${selenium-server.jar}" fork="true" spawn="true" />

 停止服务器用的 target (引自 Forum thread) :

<target name="stop-server">
    <get taskname="selenium-shutdown" src="http://localhost:4444/selenium-server/driver/?cmd=shutDown"
        dest="result.txt" ignoreerrors="true" />
    <echo taskname="selenium-shutdown" message="DGF Errors during shutdown are expected" />
</target>

用于启动 Selenese 测试的 target (引自 Forum thread) : 

<target name="runSeleniumTests">
    <java jar="${acceptanceTestLibDir}/selenium-server.jar" fork="true">
        <arg line="-htmlSuite &quot;${firefox}&quot;"/>
        <arg line="&quot;${baseURL}&quot;"/>
        <arg line="&quot;${acceptanceTestListDir}/testSuite.html&quot;"/>
        <arg line="&quot;${acceptanceTestReportDir}/results.html&quot;"/>
        <arg line="-timeout 30"/>
    </java>
</target>

一个完整的例子 :

<?xml version="1.0" encoding="UTF-8"?>
<project name="Run Test" default="run_test" basedir=".">

    <property name="test.dir" value="src\test" />

    <property name="testLibDir" value="lib" />

    <path id="run.cp">
        <pathelement path="build"/>
        <fileset dir="build/">
            <include name="*.jar"/>
        </fileset>
        <pathelement path="lib"/>
        <fileset dir="lib/">
            <include name="*.jar"/>
        </fileset>
    </path>

    <target name="run_test" description="Start Proxy ; Run TestNG ; stop Proxy">
        <parallel>
            <antcall target="start-server"></antcall>
            <sequential>	
                <echo taskname="waitfor" message="Wait for proxy server launch" />
                <waitfor maxwait="2" maxwaitunit="minute" checkevery="100">
                    <http url="http://localhost:4444/selenium-server/driver/?cmd=testComplete"/>
                </waitfor>
                    <antcall target="run_testNG"></antcall>
                    <antcall target="stop-server"></antcall>
            </sequential>
        </parallel>
    </target>

    <target name="run_testNG" description="Run TestNG">	
        <testng classpathref="run.cp" haltOnfailure="false">
            <xmlfileset dir="." includes="testng.xml" />
        </testng>
    </target>

    <target name="start-server">
        <java jar="lib/selenium-server.jar" fork="true">
            <arg line="-timeout 30"/>
            <jvmarg value="-Dhttp.proxyHost=proxy.corporate.com"/>
            <jvmarg value="-Dhttp.proxyPort=3128"/>
        </java>
    </target>

    <target name="stop-server">
        <get taskname="selenium-shutdown" 
            src="http://localhost:4444/selenium-server/driver/?cmd=shutDown"	
            dest="result.txt" ignoreerrors="true" />
        <echo taskname="selenium-shutdown" message="DGF Errors during shutdown are expected" />
    </target>

    <taskdef resource="testngtasks" classpath="lib/testng-5.0-jdk15.jar" />

</project>

 

MAVEN 2

想要在集成测试 前/后 启动/停止 Selenium RC,编辑 pom.xml 包含下面的内容: (引自 Maven 用户列表 此帖 )。

<?xml version="1.0"?>
<project>
    <dependencies>
        <dependency>
            <groupId>org.openqa.selenium.client-drivers</groupId>
            <artifactId>selenium-java-client-driver</artifactId>
            <version>${selenium-version}</version>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.openqa.selenium.server</groupId>
            <artifactId>selenium-server</artifactId>
            <version>${selenium-version}</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>dependency-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <id>copy</id>
                        <phase>pre-integration-test</phase>
                        <goals>
                            <goal>copy</goal>
                        </goals>
                        <configuration>
                            <artifactItems>
                                <artifactItem>
                                    <groupId>org.openqa.selenium.server</groupId>
                                    <artifactId>selenium-server</artifactId>
                                    <version>${selenium-version}</version>
                                    <type>jar</type>
                                    <outputDirectory>${project.build.directory}</outputDirectory>
                                    <destFileName>selenium-server.jar</destFileName>
                                </artifactItem>
                            </artifactItems>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

            <plugin>
                <artifactId>maven-antrun-plugin</artifactId>
                <executions>
                    <execution>
                        <id>start-selenium</id>
                        <phase>pre-integration-test</phase>
                        <configuration>
                            <tasks>
                                <echo taskname="selenium" message="---------------------------------------------------------"/>
                                <echo taskname="selenium" message=" Starting Selenium Remote Control                        "/>
                                <echo taskname="selenium" message=" Please make sure that FireFox executable is on the PATH "/>
                                <java jar="${project.build.directory}/selenium-server.jar" fork="yes" spawn="true"/>
                                <echo taskname="selenium" message="---------------------------------------------------------"/>                                
                            </tasks>
                        </configuration>
                        <goals>
                            <goal>run</goal>
                        </goals>
                    </execution>
                    <execution>
                        <id>stop-selenium</id>
                        <phase>post-integration-test</phase>
                        <configuration>
                            <tasks>
                                <echo taskname="selenium" message="---------------------------------------------------------"/>
                                <echo taskname="selenium" message=" Shutting down Selenium Remote Control                   "/>
                                <echo taskname="selenium" message=" DGF Errors during shutdown are expected                 "/>
                                <get taskname="selenium"
                                     src="http://localhost:4444/selenium-server/driver/?cmd=shutDown"
                                     dest="result.txt" ignoreerrors="true"/>
                                <echo taskname="selenium" message="---------------------------------------------------------"/>
                            </tasks>
                        </configuration>
                        <goals>
                            <goal>run</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>  
        </plugins>
    </build>

    <repositories>
        <repository>
            <id>openqa</id>
            <url>http://maven.openqa.org</url>
        </repository>
    </repositories>

    <properties>        
        <selenium-version>0.8.1</selenium-version>
    </properties>
</project>

Maven2 用户: Binil Thomas

JAVA

启动服务器的另一种方法 (引自 Forum thread) :

当然,把 selenium-server.jar 加到 classpath 中去,创建一个 SeleniumServer 对象并 .start() 它。

 这典型应用在 TestNG 的 SetUp() 中。

LINUX 

这里有一系列的有用的 Unix 命令做这件事:

 启动 Xvfb 作为 display 1:

启动一个 Selenium Server 并且并在此 display (display 1) 上启动 Web 浏览器:

截取 xvfb display 下的一个屏幕快照看看发生了什么 (调试模式下很有用):

注意: '%' 是 Unix shell 提示符。'DISPLAY=:1" 是一个命令行设置的环境变量。你可以很简单的设置 DISPLAY 到例如 foo.bar.com:2,代表 Selenium Web 浏览器会出现在 foo.bar.com 的第二个 X Windows display 上。

Linux 用户 : obinho.


This information is adapted from the following pages:

分享到:
评论

相关推荐

    selenium-RC.rar

    - **易于集成**:可以与持续集成工具(如Jenkins)和版本控制系统(如Git)无缝集成,便于自动化测试流程。 然而,需要注意的是,虽然Selenium RC在自动化测试领域有广泛的应用,但它已经被Selenium WebDriver所...

    Selenium-RC.rar_selenimu rc_selenium

    在“Selenium-RC.rar_selenimu rc_selenium”这个压缩包中,包含的"Selenium-RC.pdf"文件很可能是关于Selenium RC的详细教程或指南。 **1. Selenium RC 的组成部分:** Selenium RC 包括两个主要部分:服务器端...

    selenium-server-3.12.0

    6. 集成CI/CD:Selenium Server可以与持续集成工具(如Jenkins)集成,实现自动化测试的持续执行和报告。 总之,Selenium Server-3.12.0作为一个关键的自动化测试工具,为企业提供了高效、可靠的Web应用测试解决...

    selenium-server-standalone-3.6.0.jar

    6. **持续集成**:由于Selenium Server Standalone 3.6.0.jar的可编程性和灵活性,它可以轻松地与其他持续集成工具(如Jenkins、Travis CI)集成,实现自动化测试的持续运行和结果反馈。 7. **调试与日志**:3.6.0...

    selenium-server-standalone-3.141.59.jar

    在实际应用中,使用Selenium Server Standalone 3.141.59.jar时,我们通常会配合IDE(如Eclipse、IntelliJ IDEA)和版本控制系统(如Git)进行开发和管理测试脚本。同时,通过持续集成工具(如Jenkins、Travis CI)...

    selenium-server-standalone-3.13.0

    在实际应用中,Selenium 可以结合持续集成工具(如 Jenkins)、测试框架(如 TestNG 或 JUnit)以及日志记录工具一起使用,构建完整的自动化测试解决方案。此外,还有许多社区维护的库和插件,如 Page Object 模式库...

    selenium-RC

    5. **分布式测试**:Selenium RC 支持分布式测试,可以同时在多台机器上运行测试,提高测试效率,尤其适用于大型项目和持续集成环境。 6. **断言和验证**:测试脚本中可以包含断言和验证语句,用于检查网页的状态和...

    selenium-2.48.2

    9. **持续集成**:将Selenium测试与Jenkins、Travis CI等工具集成,实现自动化测试的持续执行和报告。 学习Selenium 2.48.2不仅涉及技术细节,还包括良好的编程习惯和测试策略。理解这些知识点后,你将能够创建出...

    selenium-server-standalone - 副本.zip_selenium_selenium server_sel

    Selenium Server Standalone是Selenium测试工具套件中的核心组件之一,它在自动化测试领域扮演着至关重要的角色。Selenium本身是一个开源的Web应用程序自动化测试框架,它支持多种编程语言,如Java、Python、C#等,...

    selenium-java-2.24.1.zip

    这有助于确保Web应用的功能正确性,特别是在软件开发的持续集成和持续交付(CI/CD)流程中。 值得注意的是,Selenium 2.24.1已经是较老的版本,当前版本已经更新到了4.x。尽管如此,对于学习基础或者处理遗留项目,...

    selenium-server-standalone-3.8.1.jar

    Selenium 是一个广泛使用的开源自动化测试框架,用于模拟用户在浏览器中的交互行为。它的主要目标是支持多种浏览器自动化,使得开发者和测试工程师能够编写可跨浏览器运行的测试脚本。Selenium 分为几个组件,其中...

    Selenium-server-2.0

    Selenium-server-2.0是Selenium自动化测试框架的一个重要版本,主要针对Firefox4及以上版本提供了全面的支持。在深入理解这个版本之前,...在持续集成和持续交付的环境中,Selenium-server-2.0扮演着至关重要的角色。

    Selenium安装配置及使用

    Selenium-rc 提供了API和开发库,使得测试脚本可以被集成到持续集成环境中。此外,这些脚本可以在不同的浏览器和操作系统上运行。 2. Selenium-IDE: 这是一个Firefox浏览器的插件,便于开发和运行单个测试用例或...

    selenium-server-standalone-3.4.0.jar

    使用 Selenium Server Standalone,你需要通过命令行启动服务,然后在测试脚本中指定 Hub 的地址。例如,使用 Java 编写的测试脚本可以借助 Selenium WebDriver 来连接到 Hub,并指派测试任务到 Node。 总结,...

    selenium-2.21.0

    Selenium 是一个强大的开源自动化测试框架,用于网页应用的测试。它的主要功能是模拟真实用户...在实际应用中,结合持续集成工具(如 Jenkins)和版本控制系统(如 Git),Selenium 可以成为强大且高效的测试解决方案。

    selenium-server-standalone-3.12.0.jar,解压删除null.txt(不然上传重复被限制)

    对于自动化测试项目,Selenium Server Standalone 可以结合持续集成工具(如Jenkins)进行集成,实现测试脚本的自动化执行,提高测试效率。同时,通过配置不同的浏览器驱动(如ChromeDriver、GeckoDriver等),可以...

    selenium rc

    Selenium RC可以轻松地与其他持续集成工具(如Jenkins、Bamboo等)集成,自动化测试过程,确保每次代码提交后都能进行回归测试。 ### 8. 与Selenium WebDriver的关系 Selenium RC是早期的Selenium版本,后来被...

    selenium-remote-control-1.0

    - **易于集成**:可以与持续集成工具(如Jenkins)、版本控制系统(如Git)和其他测试框架(如JUnit、TestNG)无缝集成。 ### 示例 下面是一个简单的Java示例,展示了如何使用Selenium RC打开一个网页: ```java ...

    selenium-java-2.19.0.zip

    7. **持续集成(CI)工具**: Jenkins、Travis CI等可以与Selenium集成,实现自动化测试的持续执行和构建过程的监控。 总的来说,"selenium-java-2.19.0.zip"是一个包含丰富功能的测试工具包,适用于各种Web应用的...

Global site tag (gtag.js) - Google Analytics