Можно ли запустить RSelenium в ShinyApp на сервере RStudio?

Я столкнулся с такой проблемой: у меня есть Rscript, который использует RSelenium для навигации по страницам, нажатия кнопок и сбора данных. Я включил этот скрипт как функцию в свой shinyApp. Когда я запускаю его со своего компьютера, все происходит так, как ожидалось: после нажатия кнопки запускается firefox, и процесс выполняется правильно.

Проблема возникла, когда я хотел опубликовать скрипт на сервере Rstudio (под Linux) в моей компании, чтобы предоставить доступ к инструменту (написанному под Windows) по ссылке. После запуска:

rD<-rsDriver(port=4441L, browser="firefox", chromever=NULL, iedrver = NULL, phantomver = NULL)

Получите этот вывод:

    $client
[1] "No sessionInfo. Client browser is mostly likely not opened."
$server
Process Handle
command   : /tmp/RtmpElIBko/file3a0241d505d8.sh 
system id : 15293
state     : exited

Итак, сервер работает, но браузер не открывается

журнал сервера:

$stderr
 [1] "14:22:06.908 INFO [GridLauncherV3.launch] - Selenium build info: version: '3.12.0', revision: '7c6e0b3'"                                                                                        
 [2] "14:22:06.910 INFO [GridLauncherV3$1.launch] - Launching a standalone Selenium Server on port 4441"                                                                                              
 [3] "2018-05-15 14:22:07.026:INFO::main: Logging initialized @452ms to org.seleniumhq.jetty9.util.log.StdErrLog"                                                                                     
 [4] "14:22:07.227 INFO [SeleniumServer.boot] - Selenium Server is up and running on port 4441"                                                                                                       
 [5] "14:22:08.467 INFO [ActiveSessionFactory.apply] - Capabilities are: Capabilities {browserName: firefox, javascriptEnabled: true, nativeEvents: true, version: }"                                 
 [6] "14:22:08.469 INFO [ActiveSessionFactory.lambda$apply$11] - Matched factory org.openqa.selenium.remote.server.ServicedSession$Factory (provider: org.openqa.selenium.firefox.GeckoDriverService)"
 [7] "1526383328500\tgeckodriver\tINFO\tgeckodriver 0.20.1"                                                                                                                                           
 [8] "1526383328506\tgeckodriver\tINFO\tListening on 127.0.0.1:30716"                                                                                                                                 
 [9] "1526383328777\tmozrunner::runner\tINFO\tRunning command: \"/usr/bin/firefox\" \"-marionette\" \"-profile\" \"/tmp/rust_mozprofile.KCqtcRfWkHTS\""                                               
[10] "No protocol specified"                                                                                                                                                                          
[11] "Error: cannot open display: :0" 

Мои мысли: на локальной машине у меня был установлен браузер, и его путь хранится в переменной PATH. У меня на сервере ничего не было, поэтому непонятно, что открывать.

Что я пытался сделать: к этому времени я жду, пока мой ИТ-отдел установит браузер на сервер (я даже не знаю, звучит ли это как безумие), потому что у меня нет разрешений. Я загрузил браузер Mozilla со своего компьютера на сервер и запустил следующие строки для запуска браузера без RSelenium, напрямую:

  system('java -Dwebdriver.firefox.bin="\\R\\Wordstat Yandex\\Mozilla\\firefox.exe"')
  system('java -Dwebdriver.gecko.driver,"R\\Wordstat Yandex\\geckodriver"')
  system('export PATH=$PATH:"\\R\\Wordstat Yandex\\Mozilla\\firefox.exe"')
  system("./firefox.exe")

который возвращает ошибку разрешения:

sh: ./firefox.exe: Permission denied

Итак, мои вопросы:

  1. Можно ли установить браузер на сервер (я скопировал папку и, вероятно, ошибся)
  2. Если ответ на пункт 1 - «да», то как это должно быть сделано правильно (т.е. должна ли быть установлена ​​версия linux или firefox?)
  3. Если ответ «нет», то есть ли другие способы запустить скрипты на основе Rselenium в shinyapp с сервера Rstudio (при условии, что он работает в shinyapp локально)

К этому времени я увидел в Google, как тестировать shinyapp с помощью RSelenium. Если я введу оба этих слова в один поисковый запрос, результат будет примерно одинаков.

Большое спасибо за любую помощь)


person Amaliya Akopyan    schedule 15.05.2018    source источник
comment
У меня такая же проблема, хотя я не использую ее для ShinyApp. У меня та же проблема - поскольку сценарий R запускается через сервер R (а не локально на моем компьютере), а Chrome не установлен на сервере, похоже, он не знает, что делать. Я добавил этот пост в закладки и надеюсь, что кто-нибудь поможет!   -  person ForceLeft415    schedule 28.02.2019
comment
@LakshyaAg, поскольку вы не ОП, не могли бы вы прояснить свою цель и проблемы. Я имею в виду, что сервер - это просто еще один компьютер с Linux в качестве ОС. Таким образом, можно следовать rpubs.com/johndharrison/RSelenium-Docker, чтобы установить rselenium. Если эта часть работает, можно увидеть, нужно ли адаптировать вызов от shiny, ...   -  person Tonio Liebrand    schedule 12.04.2020
comment
@TonioLiebrand Привет, спасибо за ответ. Я хотел создать что-то вроде OP. По сути, моя идея приложения заключалась в том, чтобы принимать входные данные от пользователя, сканировать некоторые страницы (используя RSelenium) и возвращать эти данные обратно в Shiny, которую я затем использовал для заполнения параметров и других вещей.   -  person LakshyaAg    schedule 14.04.2020


Ответы (1)


  1. Возможно, на вашем сервере уже установлен браузер, но проблема не в этом.
  2. Если на сервере не установлен браузер, то команда для его установки зависит от дистрибутива Linux, но вы можете узнать это, например, в Google. установите firefox ubuntu или firefox redhat 8 (я бы не стал тратить время на погоню за этой веткой).
  3. Попросите ИТ-специалистов установить RSelenium Server: https://cran.r-project.org/web/packages/RSelenium/vignettes/basics.html и поможет вам в настройке. Если у вас нет root-доступа к серверу, то ваши руки связаны, и вы должны надеяться, что ИТ-специалисты вам помогут.
person da11an    schedule 23.12.2020