将jenkins selenium插件更新到3.0.1版

时间:2017-02-15 17:00:43

标签: maven selenium jenkins selenium-webdriver jenkins-plugins

我想更新jenkins selenium插件(最新版本:2.53.1)。 我可以在jenkins之外配置selenium hub和节点,并使用最新的浏览器版本(firefox 51.0.1,chrome 55.0.2883.87)成功运行我的自动化测试,但我只想使用jenkins作为集线器。

这就是为什么我要尝试将最新版本的 selenium-server-standalone(3.0.1)集成到Jenkins中,但它无效。

收到此错误消息:

[WARNING] The POM for org.jenkins-ci.tools:maven-hpi-plugin:jar:1.117 is missing, no dependency information available
[WARNING] Failed to build parent project for org.jenkins-ci.plugins:selenium:hpi:2.53.2-SNAPSHOT
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO]Building Jenkins Selenium Plugin 2.53.2-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- maven-hpi-plugin:1.117:validate (default-validate) @ selenium ---
[INFO]
[INFO] --- maven-enforcer-plugin:1.3.1:display-info (display-info) @ selenium ---
[INFO] Maven Version: 3.3.9
[INFO] JDK Version: 1.8.0_121 normalized as: 1.8.0-121
[INFO] OS Info: Arch: amd64 Family: unix Name: linux Version: 4.4.0-62-generic
[INFO] 
[INFO] --- maven-enforcer-plugin:1.3.1:enforce (display-info) @ selenium ---
[INFO] Restricted to JDK 1.7 yet org.seleniumhq.selenium:selenium-server-standalone:jar:3.0.1:compile contains org/openqa/selenium/chrome/ChromeDriver.class targeted to JDK 1.8
[WARNING] Rule 2: org.apache.maven.plugins.enforcer.EnforceBytecodeVersion failed with message:
Found Banned Dependency: org.seleniumhq.selenium:selenium-server-standalone:jar:3.0.1
Use 'mvn dependency:tree' to locate the source of the banned dependencies.
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] 
------------------------------------------------------------------------
[INFO] Total time: 11.325 s
[INFO] Finished at: 2017-02-15T16:42:25+01:00
[INFO] Final Memory: 62M/1133M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-enforcer-plugin:1.3.1:enforce (display-info) on project selenium: Some Enforcer rules have failed. Look above for specific messages explaining why the rule failed. -> [Help 1]
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException

maven项目的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/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>fake</groupId>
    <artifactId>fake</artifactId>
    <packaging>pom</packaging>
    <version>${selenium.version}</version>

    <name>fake</name>

    <properties>
        <selenium.short.version>3.0</selenium.short.version>
        <selenium.version>${selenium.short.version}.1</selenium.version>
        <htmlunit.driver.version>2.20</htmlunit.driver.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-antrun-plugin</artifactId>
                <version>1.7</version>
                <executions>
                    <execution>
                        <phase>install</phase>
                        <goals>
                            <goal>run</goal>
                        </goals>
                        <configuration>
                            <target>
                                <get
                                    src="http://selenium-release.storage.googleapis.com/${selenium.short.version}/selenium-server-standalone-${selenium.version}.jar"
                                    dest="${project.build.directory}/selenium-server-standalone-${selenium.version}.jar"
                                    verbose="on" usetimestamp="true" />
                                <get
                                    src="https://github.com/SeleniumHQ/htmlunit-driver/releases/download/${htmlunit.driver.version}/htmlunit-driver-standalone-${htmlunit.driver.version}.jar"
                                    dest="${project.build.directory}/htmlunit-driver-standalone-${htmlunit.driver.version}.jar"
                                    verbose="on" usetimestamp="true" />
                            </target>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-install-plugin</artifactId>
                <version>2.5.1</version>
                <executions>
                    <execution>
                        <id>selenium-server-standalone</id>
                        <phase>install</phase>
                        <goals>
                            <goal>install-file</goal>
                        </goals>
                        <configuration>
                            <file>${project.build.directory}/selenium-server-standalone-${selenium.version}.jar</file>
                            <groupId>org.seleniumhq.selenium</groupId>
                            <artifactId>selenium-server-standalone</artifactId>
                            <version>${selenium.version}</version>
                            <packaging>jar</packaging>
                            <localRepositoryPath>local_m2</localRepositoryPath>

                        </configuration>
                    </execution>
                    <execution>
                        <id>htmlunit-driver-standalone</id>
                        <phase>install</phase>
                        <goals>
                            <goal>install-file</goal>
                        </goals>
                        <configuration>
                            <file>${project.build.directory}/htmlunit-driver-standalone-${htmlunit.driver.version}.jar</file>
                            <groupId>org.seleniumhq.selenium</groupId>
                            <artifactId>htmlunit-driver-standalone</artifactId>
                            <version>${htmlunit.driver.version}</version>
                            <packaging>jar</packaging>

                            <localRepositoryPath>local_m2</localRepositoryPath>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>

代码:https://github.com/jenkinsci/selenium-plugin

操作系统:Ubuntu 16.04.2; Eclipse Neon Java IDE,openjdk版本“1.8.0_121”

我已经尝试过使用openjdk 1.7,但它仍然没有用。

我是一个很新手,所以我感谢任何帮助。非常感谢。

1 个答案:

答案 0 :(得分:0)

根本原因很简单:Jenkins插件的父pom默认强制执行JDK7。 Selenium库已经转向使用JDK8。这解释了执行器插件产生的错误消息。

以下是parent pom

中如何配置enforcer插件的方法

<java.level>7</java.level>

<enforceBytecodeVersion>
  <maxJdkVersion>1.${java.level}</maxJdkVersion>
  <ignoredScopes>
    <ignoredScope>test</ignoredScope>
  </ignoredScopes>
  <excludes>
    <!-- Makes no sense to check core itself: -->
    <exclude>org.jenkins-ci.main:jenkins-core</exclude>
    <exclude>org.jenkins-ci.main:cli</exclude>
    <exclude>org.jenkins-ci.main:jenkins-test-harness</exclude>
    <!--  findbugs dep managed to provided and optional so is not shipped and missing annotations ok -->
    <exclude>com.google.code.findbugs:annotations</exclude>
  </excludes>
</enforceBytecodeVersion>

要解决这个问题,你有两个选择[我从来没有尝试过这个,但它可以尝试看看它是否有帮助](这两个选项我建议根据你父pom本身的建议)

  • 在构建代码时尝试传递JVM参数-Djava.level=8
  • 在pom文件中添加如下所示的条目(这将导致enforcer插件可能只忽略selenium库)

        Maven的实施者 - 插件                           显示信息                                                                                                       org.seleniumhq.selenium:硒-java的::罐:编译                           org.seleniumhq.selenium:硒 - 服务器:的:罐:编译
                                                                                             

希望有所帮助!

<强>更新 我花了更多的时间来看这个,并意识到为这个插件转移到selenium 3.0.1并不是很直接。我已尝试进行更改并为此提出了pull request。您可以查看PR,看看是否有帮助。

PS:我还有3次测试失败。我还没弄明白如何让它们通过。但公关应该帮助你开始。你可以直接结账我的分行并尝试从那里开始建设。