【发布时间】:2021-10-26 01:34:32
【问题描述】:
我像这样使用 docker 运行 Selenium:
docker run -d -p 4445:4444 selenium/standalone-firefox:2.53.1
以下 R 脚本中的这一行 remDr$findElement(using = "class", "percent") 工作正常。
library("tidyverse")
library("RSelenium")
# A Selenium server has to be running
# Works with: docker run -d -p 4445:4444 selenium/standalone-firefox:2.53.1
# Fails with: docker run -d -p 4445:4444 selenium/standalone-firefox:latest
remDr <- remoteDriver(port = 4445L)
remDr$open()
remDr$navigate("https://www.alternabank.ca/everyday-banking/high-interest-esavings")
webElem <- remDr$findElement(using = "class", "percent")
tmp <- webElem$getElementText()
remDr$close()
我杀死那个容器然后做:docker run -d -p 4445:4444 selenium/standalone-firefox:latest
然后再次运行相同的代码。这会导致错误:
> webElem <- remDr$findElement(using = "class", "percent")
Error in .self$value[[1]] : subscript out of bounds
这是为什么?如何让我的旧代码与最新版本的 Firefox 一起使用。我需要更新的版本才能进行其他操作。
我还看到linux进程的名字从“firefox”变成了“Gecko”。
【问题讨论】:
-
远程服务器是否正确启动? Selenium 是出了名的难以正确退出。 stackoverflow.com/questions/43991498/… 会不会是一个端口已经在使用?
-
我认为 Selenium 服务器正常启动。在两个容器之间切换时,如果我不杀死旧容器,我会收到一个端口正在使用错误,所以我认为这不是问题。
-
你试过了吗:
docker run -d -p 4445:4444 --shm-size="2g" selenium/standalone-firefox:latest? (给它一些额外的内存) -
我在 Digital Ocean 上监测了 RAM 使用情况,没关系。
-
我更新到最新版本,它也破坏了我的代码。 Win10 桌面没有 Digital Ocean 和一个完全不同的网站。
标签: r docker selenium rselenium selenium-docker