Можно ли запустить RSelenium в ShinyApp на сервере RStudio? - PullRequest
0 голосов
/ 15 мая 2018

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

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

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

A получит этот вывод:

    $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. Если я добавлю оба этих слова в один поисковый запрос, результат будет примерно одинаковым.

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

...