Selenium/standalone-firefox docker raspberry pi 不工作:如何在树莓派上使用 Selenium

Selenium/standalone-firefox docker on raspberry pi not working: how to use RSelenium on a raspberryPi

我正在尝试在 raspberry pi 3 B+ 上使用 RSelenium。我设法安装了 R 和 RSelenium。

我第一次尝试使用 rsDriver(browser = "firefox"),但我没能成功(它以无法打开 firefox 浏览器的错误告终)。

由于建议将 RSelenium 与 docker 一起使用,我正在尝试获得 docker 运行 一个 Selenium/firefox 独立容器。

我设法 docker 起床 运行 宁。 hello-world 运行 和 ubuntu bash 一样有效(docker run -it ubuntu bash 让我得到一个 ubuntu 终端)。

我拉取了给定版本(第 3 个)的独立 firefox 镜像

这是我的图片:

ubuntu                        latest              f576a39bda44        2 weeks ago         46.7MB
selenium/standalone-firefox   3                   d803a00f9219        3 weeks ago         756MB
hello-world                   latest              618e43431df9        10 months ago       1.64kB

然后我

sudo docker run -d -p 4445:4444 selenium/standalone-firefox:3

但是我做的时候没有容器docker ps

sudo docker ps -a
CONTAINER ID        IMAGE                           COMMAND                  CREATED             STATUS                      PORTS               NAMES
351866263f7b        selenium/standalone-firefox:3   "/opt/bin/entry_poin…"   10 seconds ago      Exited (1) 6 seconds ago                        fervent_noether

说明容器执行时直接退出。我尝试使用 standalone-firefox:2.53.0(拉取和执行),结果出现了同样的问题。我做错了什么? raspberry pi 不支持 standalone-firefox 版本?

更一般地说,有人知道如何让 RSelenium 在 raspberry pi(使用 firefox 作为浏览器)上工作吗?


编辑

根据 LinPy 的回答,我尝试提取 docker 与 raspberry pi arm 架构兼容的 selenium 浏览器的图像。我找到了这些:

docker containers 运行 没有问题,但我从来没有管理过 RSelenium 中的remoteDriver连接到broswer(不同原因不同的错误,我在这里不详细说明).

我发现在没有远程服务器的情况下在 raspberry-pi 上使用 RSelenium 的唯一方法是执行 java selenium 独立服务器,你可以找到 here(我试过 2.53.0):

java -jar selenium-server-standalone-2.53.0.jar

然后在R中连接:

library(RSelenium)
rmDr <- remoteDriver(port = 4444L)
rmDr$open()

最后就是这么简单。

您错误地使用了 docker 容器。您实际上可以看到您的容器在执行 docker ps -a,但这并不好。您指定了 -p 参数并且没有向其传递任何端口,并且您传递了没有标签的图像。按照这张图片的官方文档一步步重试:

https://github.com/SeleniumHQ/docker-selenium

我认为您的应用与 os ARCH 不匹配。实际上它看起来像是为 amd64 构建的应用程序,但你尝试在 arm 上启动它。

所以请检查您的 Docker / APP 版本并确保它们兼容....

this and this