如何让Jenkins运行我的Maven / Selenium GitHub测试

时间:2014-02-13 15:25:16

标签: java maven selenium github jenkins

目前我有一个包含4个Selenium / Maven测试的GitHub Repo。我可以通过 mvn test

在我的本地计算机上单独运行每个测试

我让Jenkins也在我的本地计算机上运行并创建了一个maven项目来拉取我的GitHub存储库,在其中一个测试中选择pom.xml(P_ProfileChangeMavenTest)然后执行测试作为我的maven目标。

当Jenkins运行我的测试时,它开始通过我的maven项目但是没有拔出Firefox浏览器来与我的测试进行交互。

的pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.test.profilechange</groupId>
    <artifactId>Profile</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>Profile</name>
    <description>PRofile</description>
    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.11</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-java</artifactId>
            <version>2.39.0</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.5</version>
        </dependency>
        <dependency>
            <groupId>org.apache.maven.surefire</groupId>
            <artifactId>surefire</artifactId>
            <version>2.16</version>
            <type>pom</type>
        </dependency>
    </dependencies>
</project>

我对自动化相当新,并且在发送这些测试以在具有selenium网格的服务器上运行之前,我首先尝试在本地计算机上验证一切正常。

所有的帮助将非常受欢迎,因为我需要尽快使用。

先谢谢!

5 个答案:

答案 0 :(得分:0)

我发现对我们有用的是使用testNg来运行测试。我们创建一个XML文件,其中包含我们想要运行的不同测试,我们使用

mvn test -D testng = testname.xml

TestNG是集成样式测试的一个很好的框架,而J单元测试框架更适用于单元测试。

xml文件的示例将是这样的。

    <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name=" Report - Create New Report and Add Fields By Double Click and Filter by Right Clicking" parallel="none" verbose="1">
    <test verbose="1" name="is site available" preserve-order="true">
    <classes>
      <class name="com.somecompany.qa.seleniumautomation.PucDD">
        <methods>
          <include name="siteAvailable" />
        </methods>
      </class>
    </classes>
  </test>
  <test verbose="1" name="Login as 'admin' 'password'" preserve-order="true">
    <classes>
      <class name="com.somecompany.qa.seleniumautomation.PucDD">
        <methods>
          <parameter name="login.user" value="admin" />
          <parameter name="login.password" value="password" />
          <include name="login" />
        </methods>
      </class>
    </classes>
  </test>
  <test verbose="1" name="Create a new Report based on the provided data source" preserve-order="true">
    <classes>
      <class name="com.somecompany.qa.seleniumautomation.Reports">
        <methods>
            <parameter name="data.source.name" value="Orders" />    
            <include name="createNewReport"/>
        </methods>
      </class>
    </classes>
  </test>
  <test verbose="1" name="Add the passed fields to the report by double clicking and add the passed filters by right clicking the field." preserve-order="true">
    <classes>
      <class name="com.company.qa.seleniumautomation.Reports">
        <methods>
            <parameter name="login.user" value="admin" />   
            <parameter name="login.password" value="password" />
            <parameter name="fields" value="Customer Number,Customer Name,Order Date,Status,Shipped Date" />
            <parameter name="filterCriteria" value="Customer Number:lte=300,Customer Number:gte=150,Product Lines:contains=a" />
            <include name="addFilters"/>
        </methods>
      </class>
    </classes>
  </test>
  <test verbose="1" name="Close the report" preserve-order="true">
    <classes>
      <class name="com.company.qa.seleniumautomation.Reports">
        <methods>
          <include name="close"/>
        </methods>
      </class>
    </classes>
  </test>
</suite>

答案 1 :(得分:0)

jenkins工作正在它自己的客户端上运行。它没有可见的UI,这就是你测试失败的原因。

您应该更改测试代码以使用Remote Webdriver或Selenium Grid

//need to start a selenium standalone server
DesiredCapabilities capability = DesiredCapabilities.firefox();
WebDriver driver = new RemoteWebDriver(new URL("http://SERVER_ADDRESS:4444/wd/hub"), capability);

请参阅Selenium Grid Wiki了解更多详情

答案 2 :(得分:0)

如果您使用命令行启动Jenkins,并且运行测试,那么您可以在浏览器上看到正在运行的测试。

使用命令行启动Jenkins的命令: java -jar jenkins.war

希望这有帮助。

答案 3 :(得分:0)

尝试从命令提示符下以管理员身份运行它,为我工作。

答案 4 :(得分:0)

如果你在Windows上:

1)。转到命令提示符:  输入“cmd”

2)。按Ctl + Shft + Enter(以管理员身份打开)

3).Type“Services.msc”

4)。它将打开Windows服务,选择“Jenkins”服务,右键单击&amp;打开属性并转到“登录”选项卡并选择“本地系统帐户”,然后选择“允许服务与桌面交互”。

enter image description here

5)。按“确定”。

6)。将打开一个对话框。单击“查看消息”窗口“此计算机上运行的程序正在尝试显示消息”。

enter image description here

现在你可以看到在同一台机器上运行的测试......享受!