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

Posted

技术标签:

【中文标题】如何使用 Java + ChromeDriver 在 AWS Lambda 中运行 Google Chrome 进行 Selenium 测试【英文标题】:How to run Google Chrome in AWS Lambda for Selenium tests using Java + ChromeDriver 【发布时间】:2019-01-24 15:00:56 【问题描述】:

我使用以下版本:

硒 - 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);

当我运行我的 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.)

有没有在AWS Lambda中安装Chrome浏览器并提供给ChromeDriver的好方法?

【问题讨论】:

你有没有碰巧得到这个工作?除了 C# 之外,我正在解决同样的问题。 @user1011627 不幸的是我还没有找到答案。 【参考方案1】:

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

options.setBinary("/tmp");

【讨论】:

以上是关于如何使用 Java + ChromeDriver 在 AWS Lambda 中运行 Google Chrome 进行 Selenium 测试的主要内容,如果未能解决你的问题,请参考以下文章

在 Selenium / Java 中杀死 chromedriver 进程

使用 chromedriver 查找包含文本 IMG、Java Selenium 的 Spans [重复]

Java爬虫Selenium+Java+ChromeDriver

reCAPTCHA 3 如何知道我正在使用 Selenium/chromedriver?

从渲染器接收消息超时:0.100 条日志消息使用 ChromeDriver 和 Chrome v80 通过 Selenium Java

使用chromedriver时报错