同一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
相关产品推荐
相关产品推荐

