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

Docker容器中Java Maven Selenium测试失败问题求助

问题排查与解决方案

1. 补充ChromeHeadless关键启动参数

Docker容器内运行Chrome Headless模式必须添加沙箱和共享内存相关参数,否则会出现页面加载异常或元素无法定位的问题。修改你的ChromeOptions配置:

ChromeOptions options = new ChromeOptions();
options.addArguments("--window-size=1920,1080");
options.addArguments("--disable-gpu");
options.addArguments("--disable-extensions");
options.setExperimentalOption("useAutomationExtension", false);
options.addArguments("--proxy-server='direct://'");
options.addArguments("--proxy-bypass-list=*");
options.addArguments("--start-maximized");
options.addArguments("--headless");
// 新增容器运行必备参数
options.addArguments("--no-sandbox");
options.addArguments("--disable-dev-shm-usage");
System.setProperty("webdriver.chrome.driver","/usr/bin/chromedriver");
driver = new ChromeDriver(options);

2. 检查页面是否存在iframe嵌套

如果登录表单位于iframe内,直接通过id定位元素会失败,需要先切换到对应的iframe:

// 先等待iframe加载完成并切换
wait.until(ExpectedConditions.frameToBeAvailableAndSwitchToIt(By.id("目标iframe的id")));
// 再定位username元素
wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("username"))).sendKeys(Const.user);
// 操作完成后切回主文档(若后续需操作其他元素)
driver.switchTo().defaultContent();

3. 修正Java版本编译配置

你的项目基于Java 1.8,但Maven编译时target设为17,可能导致字节码兼容性问题,修改pom.xml的maven-compiler-plugin配置:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-compiler-plugin</artifactId>
  <version>3.10.1</version>
  <configuration>
    <source>1.8</source>
    <target>1.8</target> <!-- 改为与source一致的1.8版本 -->
    <encoding>UTF-8</encoding> <!-- 建议添加编码配置避免乱码 -->
  </configuration>
</plugin>

4. 验证容器内网络与页面加载情况

  • 进入容器后,用curl命令测试目标登录页是否能正常加载:
curl -L https://你的登录页面URL
  • 如果页面返回403、跳转错误页面或加载不全,需排查容器网络是否能访问目标站点,是否需要配置代理或调整防火墙规则。

5. 捕获页面截图排查实际加载状态

在测试代码中添加截图逻辑,查看容器内Chrome实际加载的页面内容:

try {
    File screenshot = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);
    FileUtils.copyFile(screenshot, new File("/app/screenshot.png")); // 挂载的本地目录可查看截图
} catch (IOException e) {
    e.printStackTrace();
}

通过截图确认页面是否完整加载,是否出现验证码、弹窗或其他与本地环境不同的内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 00:10:32