You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

同一Java项目中通过Maven为不同浏览器/Android环境配置不同Selenium依赖版本的可行性及实现方法

实现不同环境/浏览器的Selenium版本配置(Maven)

当然可以实现!Maven的Profiles功能就是专门用来处理这种多环境、多配置场景的,完全能满足你针对Chrome、Firefox、Android分别指定Selenium 3.141.59和4.1.0版本的需求。

下面是具体的POM配置方案,我会把逻辑拆解开,方便你理解:

1. 基础配置:定义通用属性和默认依赖

先在POM的<properties>里定义Selenium版本的占位符,同时配置通用的依赖结构:

<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.yourcompany</groupId>
    <artifactId>selenium-multi-version</artifactId>
    <version>1.0-SNAPSHOT</version>

    <!-- 默认Selenium版本(可设为常用版本,也可留空) -->
    <properties>
        <selenium.version>3.141.59</selenium.version>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>

    <!-- 通用依赖(比如测试框架) -->
    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13.2</version>
            <scope>test</scope>
        </dependency>
        <!-- Selenium核心依赖,版本使用占位符 -->
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-java</artifactId>
            <version>${selenium.version}</version>
        </dependency>
    </dependencies>

2. 定义不同环境的Profiles

接下来在<profiles>节点里为每个浏览器/版本组合创建单独的profile,覆盖默认的selenium.version属性,还可以针对性添加浏览器驱动或适配依赖:

<profiles>
        <!-- Chrome + Selenium 3.141.59 -->
        <profile>
            <id>chrome-selenium3</id>
            <properties>
                <selenium.version>3.141.59</selenium.version>
            </properties>
            <dependencies>
                <dependency>
                    <groupId>org.seleniumhq.selenium</groupId>
                    <artifactId>selenium-chrome-driver</artifactId>
                    <version>${selenium.version}</version>
                </dependency>
            </dependencies>
        </profile>

        <!-- Chrome + Selenium 4.1.0 -->
        <profile>
            <id>chrome-selenium4</id>
            <properties>
                <selenium.version>4.1.0</selenium.version>
            </properties>
            <dependencies>
                <dependency>
                    <groupId>org.seleniumhq.selenium</groupId>
                    <artifactId>selenium-chrome-driver</artifactId>
                    <version>${selenium.version}</version>
                </dependency>
            </dependencies>
        </profile>

        <!-- Firefox + Selenium 3.141.59 -->
        <profile>
            <id>firefox-selenium3</id>
            <properties>
                <selenium.version>3.141.59</selenium.version>
            </properties>
            <dependencies>
                <dependency>
                    <groupId>org.seleniumhq.selenium</groupId>
                    <artifactId>selenium-firefox-driver</artifactId>
                    <version>${selenium.version}</version>
                </dependency>
            </dependencies>
        </profile>

        <!-- Firefox + Selenium 4.1.0 -->
        <profile>
            <id>firefox-selenium4</id>
            <properties>
                <selenium.version>4.1.0</selenium.version>
            </properties>
            <dependencies>
                <dependency>
                    <groupId>org.seleniumhq.selenium</groupId>
                    <artifactId>selenium-firefox-driver</artifactId>
                    <version>${selenium.version}</version>
                </dependency>
            </dependencies>
        </profile>

        <!-- Android环境 + Selenium 3.141.59(搭配Appium) -->
        <profile>
            <id>android-selenium3</id>
            <properties>
                <selenium.version>3.141.59</selenium.version>
                <appium.version>7.5.1</appium.version>
            </properties>
            <dependencies>
                <dependency>
                    <groupId>io.appium</groupId>
                    <artifactId>java-client</artifactId>
                    <version>${appium.version}</version>
                    <exclusions>
                        <!-- 排除Appium自带的Selenium,使用我们指定的版本 -->
                        <exclusion>
                            <groupId>org.seleniumhq.selenium</groupId>
                            <artifactId>selenium-java</artifactId>
                        </exclusion>
                    </exclusions>
                </dependency>
            </dependencies>
        </profile>

        <!-- Android环境 + Selenium 4.1.0 -->
        <profile>
            <id>android-selenium4</id>
            <properties>
                <selenium.version>4.1.0</selenium.version>
                <appium.version>8.0.0</appium.version> <!-- Appium 8+适配Selenium 4 -->
            </properties>
            <dependencies>
                <dependency>
                    <groupId>io.appium</groupId>
                    <artifactId>java-client</artifactId>
                    <version>${appium.version}</version>
                    <exclusions>
                        <exclusion>
                            <groupId>org.seleniumhq.selenium</groupId>
                            <artifactId>selenium-java</artifactId>
                        </exclusion>
                    </exclusions>
                </dependency>
            </dependencies>
        </profile>
    </profiles>
</project>

3. 如何运行指定环境的构建

配置完成后,你只需要在Maven命令中通过-P参数指定对应的profile ID即可:

  • 运行Chrome + Selenium 3:mvn clean test -P chrome-selenium3
  • 运行Firefox + Selenium 4:mvn clean test -P firefox-selenium4
  • 运行Android + Selenium 3:mvn clean test -P android-selenium3

一些额外说明

  • Selenium 4的依赖结构和Selenium 3略有不同,比如单独拆分了各浏览器的驱动依赖,但selenium-java依然包含所有驱动,你可以根据需求选择引入整体包或单独驱动。
  • 针对Android环境,我搭配了Appium依赖并排除了其自带的Selenium,避免版本冲突,确保使用我们指定的版本。
  • 你可以根据实际需求调整profile里的依赖,比如添加其他测试工具、调整JDK版本等。

内容的提问来源于stack exchange,提问作者Kavya KS

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 06:53:30