如何仅在Jenkins运行时执行特定ChromeDriver配置代码?
实现Jenkins环境下仅添加指定ChromeDriver选项
要实现仅在Jenkins运行测试时添加force-device-scale-factor=0.70和high-dpi-support=0.70这两个Chrome选项,你可以通过判断Jenkins环境标识来条件执行代码,以下是两种常用方案:
方案1:利用Jenkins自带环境变量判断
Jenkins运行构建时会自动设置专属环境变量(比如BUILD_NUMBER、JENKINS_HOME),直接读取这些变量即可识别Jenkins环境:
System.setProperty("webdriver.chrome.silentOutput", "true"); ChromeOptions co = new ChromeOptions(); co.addArguments("--remote-allow-origins=*"); co.addArguments("--start-maximized"); // co.addArguments("--user-data-dir=" + System.getProperty("java.io.tmpdir")); // 判断是否处于Jenkins环境:读取BUILD_NUMBER变量(Jenkins独有) String buildNumber = System.getenv("BUILD_NUMBER"); if (buildNumber != null && !buildNumber.isEmpty()) { co.addArguments("force-device-scale-factor=0.70"); co.addArguments("high-dpi-support=0.70"); } co.setExperimentalOption("excludeSwitches", new String[] { "enable-automation" }); co.addArguments("--disable-notifications"); tlDriver.set(new ChromeDriver(co));
方案2:通过自定义系统属性控制
在Jenkins构建配置中给JVM添加自定义参数,再在代码中读取该参数判断:
Jenkins配置操作:
在任务的构建步骤里,给JVM添加参数:-Drun.in.jenkins=true
修改后的代码:
System.setProperty("webdriver.chrome.silentOutput", "true"); ChromeOptions co = new ChromeOptions(); co.addArguments("--remote-allow-origins=*"); co.addArguments("--start-maximized"); // co.addArguments("--user-data-dir=" + System.getProperty("java.io.tmpdir")); // 判断是否处于Jenkins环境:读取自定义系统属性 String isJenkins = System.getProperty("run.in.jenkins"); if ("true".equals(isJenkins)) { co.addArguments("force-device-scale-factor=0.70"); co.addArguments("high-dpi-support=0.70"); } co.setExperimentalOption("excludeSwitches", new String[] { "enable-automation" }); co.addArguments("--disable-notifications"); tlDriver.set(new ChromeDriver(co));
两种方案都能精准控制目标代码的执行时机:方案1无需额外配置Jenkins,方案2更灵活可控,可根据实际场景选择。
内容的提问来源于stack exchange,提问作者PleasePlease
相关产品推荐
相关产品推荐

