r-如何在Linux下可靠地打开与RSelenium的服务器/客户端连接



更新:自RSelenium 1.7.9起,所述问题已消失。

我知道,有人问过类似的问题,但他们的解决方案对我不起作用

摘要:我想通过R的软件包RSelenium在Linux下打开一个Selenium服务器和一个客户端。但是,尽管我尝试了文档中描述的两种方法(同时我想避免docker(它不能可靠地工作。

我的系统:Linux 5.19,R 4.2.1,R硒1.7.7、硒服务器-标准-4.0.0-α-2,变色龙104.0.5112.79-2.1、壁虎0.31.0(binman(,我已经测试了OpenJDK 11和OpenJDK 18(目前(

I。硒通过JAVA

在Linux控制台中

@localhost:~/Documents/selenium> java -jar selenium-server-standalone-4.0.0-alpha-2.jar
20:04:49.470 INFO [GridLauncherV3.parse] - Selenium server version: 4.0.0-alpha-2, revision: f148142cf8
20:04:49.526 INFO [GridLauncherV3.lambda$buildLaunchers$3] - Launching a standalone Selenium Server on port 4444
20:04:49.730 INFO [WebDriverServlet.<init>] - Initialising WebDriverServlet
20:04:49.793 INFO [SeleniumServer.boot] - Selenium Server is up and running on port 4444

在R I类型中:

remDr <- remoteDriver(remoteServerAddr = "localhost", port = 4444L, browserName = "chrome", version = "104.0.5112.79")

并在Linux控制台中获得输出:

20:07:49.463 INFO [ActiveSessionFactory.apply] - Capabilities are: {
"browserName": "chrome",
"javascriptEnabled": true,
"nativeEvents": true,
"version": "104.0.5112.79"
}
20:07:49.465 INFO [ActiveSessionFactory.lambda$apply$11] - Matched factory org.openqa.selenium.grid.session.remote.ServicedSession$Factory (provider: org.openqa.selenium.chrome.ChromeDriverService)
Starting ChromeDriver 104.0.5112.79 (3cf3e8c8a07d104b9e1260c910efb8f383285dc5-refs/branch-heads/5112@{#1307}) on port 15987
Only local connections are allowed.
Please see https://chromedriver.chromium.org/security-considerations for suggestions on keeping ChromeDriver safe.
ChromeDriver was started successfully.
20:07:50.023 INFO [ProtocolHandshake.createSession] - Detected dialect: W3C
20:07:50.044 INFO [RemoteSession$Factory.lambda$performHandshake$0] - Started new session 732d7c7ddfeaed42fc80fac54f91fcb5 (org.openqa.selenium.chrome.ChromeDriverService)

Chrome浏览器打开,R控制台给了我死亡之吻:

Error in checkError(res) : 
Undefined error in httr call. httr output: Failed initialization

这意味着,我不能使用R-控制台进行导航。另一种方法:

II。硒通过硒::rsDriver

rD <- RSelenium::rsDriver(browser="firefox", port = 4567L, verbose = FALSE)

大部分收益率(打开浏览器窗口(

Could not open firefox browser.
Client error message:
Undefined error in httr call. httr output: Failed initialization
Check server log for further details.

但是:完全相同的代码可以工作!随机或者在长时间打开R之后?!?无尽的测试?!?突然间,我得到了几个正在运行的服务器/客户端连接,包括网页上的导航:

$acceptInsecureCerts
[1] FALSE
$browserName
[1] "firefox"
$browserVersion
[1] "103.0.2"
$`moz:accessibilityChecks`
[1] FALSE
$`moz:buildID`
[1] "20220815180539"
$`moz:geckodriverVersion`
[1] "0.31.0"
etc.pp.

但最晚当我重新启动电脑时,我再次收到同样的错误消息。它也可以通过中的RSelenium在删除和重新安装四个驱动程序后工作/本地/共享。或者,当我再次尝试同样的方法时,它根本没有。我从来没有遇到过这种随机性的问题。它从哪里来?

PS:服务器日志,如果它不起作用,可以有额外的行,我添加了:

> rD$server$log()
$stderr                                                                                            
[26] "Missing chrome or resource URL: resource://gre/modules/UpdateListener.jsm"                                                                                                                                                                                                                   
[27] "Missing chrome or resource URL: resource://gre/modules/UpdateListener.sys.mjs"                                                                                                                                                                                                               
[28] "console.error: "Error during quit-application-granted: [Exception... \"File error: Not found\"  nsresult: \"0x80520012 (NS_ERROR_FILE_NOT_FOUND)\"  location: \"JS frame :: resource:///modules/BrowserGlue.jsm :: _onQuitApplicationGranted/tasks< :: line 2006\"  data: no]""
[29] "1661020441351tMarionettetINFOtStopped listening on port 42425"                                                                                                                                                                                                                            
[30] "JavaScript error: chrome://remote/content/marionette/cert.js, line 57: NS_ERROR_NOT_AVAILABLE: Component returned failure code: 0x80040111 (NS_ERROR_NOT_AVAILABLE) [nsICertOverrideService.setDisableAllSecurityChecksAndLetAttackersInterceptMyData]"                                      
$stdout
character(0)

也许您可以尝试以下依赖Docker的方法:

library(RSelenium)
url <- "https://www.hubs.com/3d-printing/#/?place=New%20York&latitude=40.7144&longitude=-74.006&distanceLimit=250&distanceUnit=miles&shipsToCountry=US&shipsToState=NY"
shell('docker run -d -p 4445:4444 selenium/standalone-firefox')
remDr <- remoteDriver(remoteServerAddr = "localhost", port = 4445L, browserName = "firefox")
remDr$open()
remDr$navigate(url)
remDr$getPageSource()[[1]]

相关内容

  • 没有找到相关文章

最新更新