如何使用 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