Использование Rselenium на mac sierra

Кажется, что каждый раз, когда я обновляю свою ОС, R или любые браузеры Rselenium перестают работать. Я больше не могу использовать его ни с одним браузером — Firefox, Chrome или PhantomJS. Я разместил свой код ниже.

Информация о сеансе:

sessionInfo()
R version 3.3.2 (2016-10-31)
Platform: x86_64-apple-darwin13.4.0 (64-bit)
Running under: macOS Sierra 10.12.2

locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] rvest_0.3.2.9000 xml2_1.0.0       RSelenium_1.6.2 

loaded via a namespace (and not attached):
 [1] httr_1.2.1     magrittr_1.5   R6_2.2.0       tools_3.3.2    curl_2.3       Rcpp_0.12.8   
 [7] jsonlite_1.2   caTools_1.17.1 openssl_0.9.6  bitops_1.0-6   XML_3.98-1.4  

Мой рабочий процесс выглядит следующим образом:

  1. PhantomJS: установить в терминал с помощью узла npm (установить узел npm с помощью brew: brew install node)

    npm install -g phantomjs
    phantomjs --version #To check if it installed
        2.1.1  #It did
    

    На моем сеансе R:

    library(RSelenium) 
    ptm <- phantom() #also tried running checkForServer() and startServer() first but both were deprecated with no substitute stated...
    

[ОШИБКА - 2017-01-06T01:55:35.240Z] GhostDriver - main.fail - {"строка":85,"sourceURL":"phantomjs://code/main.js","стек":"глобальный код @phantomjs://code/main.js:85:56"}

phantomjs://platform/console++.js:263 по ошибке

    rd <- remoteDriver(browserName = 'phantomjs')
    rd$open()

[1] Ошибка «Подключение к удаленному серверу». Сводка: UnknownError
Подробности. При обработке команды произошла неизвестная ошибка на стороне сервера. класс: java.util.concurrent.TimeoutException Дополнительные сведения: запустить метод errorDetails

  1. Драйвер Chrome: загружен с сайта https://chromedriver.storage.googleapis.com/index.html?path=2.27/ и двоичный файл, помещенный в /usr/local/bin

    rd <-remoteDriver(browserName = 'chrome')
    rd$open() #At this point, Google Chrome opens up for 1 second and then closes and an error pops up
    

Сообщение Selenium: сеанс не создан, исключение из-за неизвестной ошибки: Runtime.evaluate отсутствует «wasThrown» (информация о сеансе: chrome = 55.0.2883.95) (информация о драйвере: chromedriver = 2.23.409710 (0c4084804897ac45b5ff65a690ec6583b97225c0), платформа = Mac OS X x 18.6_4.2 ) (ВНИМАНИЕ: сервер не предоставил никакой информации о трассировке стека) Продолжительность команды или время ожидания: 1,09 секунды Информация о сборке: версия: «3.0.0-beta2», ревизия: «2aa21c1», время: «2016-08-02 15:03». :28 -0700 'Информация о системе: хост: 'Cyrus-M.local', ip: '10.0.1.3', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.12 .2", java.версия: "1.8.0_101" Информация о драйвере: org.openqa.selenium.chrome.ChromeDriver

Ошибка: Сводка: SessionNotCreatedException Сведения: Не удалось создать новый сеанс. класс: org.openqa.selenium.SessionNotCreatedException Дополнительные сведения: запустить метод errorDetails

  1. Firefox: установлен драйвер геккона в /usr/local/bin (без этого следующий код выдаст ошибку, указывающую, что мне нужно установить драйвер геккона)

    remDr <- remoteDriver$new()
    remDr$open() #a blank Firefox page opens up but then the following error is produced)
    

[1] «Подключение к удаленному серверу»

Сообщение Selenium: неподдерживаемый протокол Marionette версии 2, требуется 3 (ВНИМАНИЕ: сервер не предоставил никакой информации о трассировке стека) Продолжительность или время ожидания команды: 1,06 секунды Информация о сборке: версия: «3.0.0-beta2», ревизия: «2aa21c1», время : '2016-08-02 15:03:28 -0700' Информация о системе: хост: 'Cyrus-M.local', ip: '10.0.1.3', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.12.2', java.version: '1.8.0_101' Информация о драйвере: org.openqa.selenium.firefox.FirefoxDriver

Ошибка: Сводка: UnknownError Сведения: При обработке команды произошла неизвестная ошибка на стороне сервера. класс: org.openqa.selenium.WebDriverException Дополнительные сведения: запустить метод errorDetails

    remDr$navigate("http://www.google.com")

Ошибка в checkError(res): неопределенная ошибка в вызове httr. вывод httr: длина (url) == 1 не является ИСТИННОЙ

Буду признателен за любую оказанную помощь.

ОБНОВЛЕНИЕ

После обновления Firefox до бета-версии (51.0b11) я могу успешно просматривать страницы, но проблемы сохраняются при использовании Chrome и PhantomJS.

remDr <- remoteDriver$new()
remDr$open()

[1] "Connecting to remote server"
$rotatable
[1] FALSE

$raisesAccessibilityExceptions
[1] FALSE

$appBuildId
[1] "20170103031119"

$version
[1] ""

$platform
[1] "MAC"

$proxy
named list()

$command_id
[1] 1

$nativeEvents
[1] TRUE

$specificationLevel
[1] 0

$acceptSslCerts
[1] FALSE

$processId
[1] 7529

$webdriver.remote.sessionid
[1] "64ac4d92-5761-4865-ba60-9cfaafe92a14"

$browserVersion
[1] "51.0"

$platformVersion
[1] "16.3.0"

$XULappId
[1] "{ec8030f7-c20a-464f-9b0e-13a3a9e97384}"

$browserName
[1] "firefox"

$takesScreenshot
[1] TRUE

$javascriptEnabled
[1] TRUE

$takesElementScreenshot
[1] TRUE

$platformName
[1] "darwin"

$cssSelectorsEnabled
[1] TRUE

$id
[1] "64ac4d92-5761-4865-ba60-9cfaafe92a14"

remDr$navigate("http://www.google.com") #Firefox opens up and browsing is accessible

person Cyrus Mohammadian    schedule 06.01.2017    source источник
comment
Я бы рекомендовал запустить образ Docker, см. rpubs.com/johndharrison/RSelenium-Docker . Ваш chromedriver отображается как 2.23, а не 2.27, см. github.com/seleniumhq/selenium/issues/1618 .   -  person jdharrison    schedule 06.01.2017
comment
npmjs.com/package/phantomjs, когда я использовал его, ранее регистрировал фантомные файлы как скрипт узла, см. > more phantomjs в вашем терминале. Я подозреваю, что вы увидите скрипт узла. Это не указывает на двоичный файл phantomjs. Этот пакет узла не является официальным и фактически устарел.   -  person jdharrison    schedule 06.01.2017
comment
@ jdharrison Спасибо. Да, странно, что он думает, что это 2,23. Драйвер у меня стоит 2.27 (после того как скачал по ссылке выше). Это может быть частью проблемы. Что касается докера, есть инструкции для различных дистрибутивов Linux, но не для Mac. Могу ли я использовать эти инструкции на Mac в терминале?   -  person Cyrus Mohammadian    schedule 07.01.2017
comment
Запуск Docker на Mac эквивалентен установке Windows или Linux. Набор инструментов Docker эквивалентен установке Windows, как описано в виньетке. Docker для Mac эквивалентен собственной установке Linux. То, что вы используете, будет зависеть от ваших доступных ресурсов. Если у вас достаточно оперативной памяти (поскольку вы используете sierra), вы сможете запустить более новую версию Docker для Mac.   -  person jdharrison    schedule 07.01.2017