如何使用 Java + ChromeDriver 在 AWS Lambda 中运行 Google Chrome 进行 Selenium 测试

Rom*_*ush 5 java selenium headless selenium-chromedriver aws-lambda

我使用以下版本:

  • 硒 - 3.14.0
  • Webdrivermanager - 2.2.4

要创建 ChromeDriver,我使用以下配置:

WebDriverManager.chromedriver()
            .targetPath("/tmp")
            .setup();

    ChromeOptions options = new ChromeOptions();
    options.addArguments("--headless", "--no-sandbox", "--disable-dev-shm-usage");
    options.setBinary("/tmp");

    ChromeDriver driver = new ChromeDriver(options);
Run Code Online (Sandbox Code Playgroud)

当我运行我的 lambda 时,会发生以下异常(来自 lambda 日志):

org.openqa.selenium.WebDriverException: unknown error: Chrome failed to start: exited abnormally (unknown error: DevToolsActivePort file doesn't exist)
(The process started from chrome location /tmp is no longer running, so ChromeDriver is assuming that Chrome has crashed.)
Run Code Online (Sandbox Code Playgroud)

在 AWS Lambda 中安装 Chrome 浏览器并为 ChromeDriver 提供它有什么好方法吗?

Bon*_*cía 0

setBinary()的方法ChromeOptions应该用于设置Chrome浏览器的路径。问题是您正在使用 WebDriverManager 设置chromedriver(即 Selenium WebDriver 与 Chrome 通信所需的二进制文件)下载的路径。因此,您需要删除该行:

options.setBinary("/tmp");
Run Code Online (Sandbox Code Playgroud)