我又一次读了很多关于这个问题的帖子,却无法理解......
我在Ubuntu 22.04操作系统上使用Rselenium和selenium独立镜像与Docker。
下面的代码在使用Docker镜像selenium/standalone-chrome-debug
时运行良好:
system('docker run -d -p 4445:4444 selenium/standalone-chrome-debug')
remDr <- remoteDriver(remoteServerAddr = "localhost",
port = 4445L,
browserName = "chrome")
remDr$open()
remDr$navigate("https://fr.distance.to/paris/bayonne-france")
el <- remDr$findElement(using = "css", ".headerRoute > #strck > span:nth-child(1)")
road_distance <- el$getElementText()[[1]]
remDr$close()
system('docker rm -f $(docker ps -aq --filter ancestor=selenium/standalone-chrome-debug)')
然而,完全相同的代码,但使用selenium/standalone-chrome
图像,在remDr$open()
的第一步卡住,最终输出崩溃:
remDr$open()
[1] "Connecting to remote server"
$id
[1] NA
任何想法为什么以及如何解决这个问题?我真的不介意使用selenium/standalone-chrome
映像的debug
版本,但它似乎已被弃用,我很想了解这里发生了什么
1条答案
按热度按时间aiazj4mn1#
我也遇到过同样的问题,你的帖子实际上很有帮助,因为它实际上允许我连接到standalone-chrome-debug docker容器。
我认为基本的问题是RSelenium已经很长时间没有更新了,并且使用的是Selenium版本2。碰巧的是,图像selenium/standalone-chrome-debug也很长时间没有更新了。我相信selenium/standalone-chrome镜像使用的是更新版本的Selenium API,而RSelenium代码在尝试使用旧的API来处理新镜像时失败了。
事实证明,使用Python Selenium绑定和R中的reticulate包连接到Docker容器非常容易。这里有一个对我有用的例子: