phantomjs не может найти элемент на странице

Недавно у меня были проблемы с вождением фантомов в RSelenium. Кажется, что браузер не может найти что-либо на странице, используя findElement(), Если я передам что-то так просто, как:

library("RSelenium")
RSelenium::checkForServer()
RSelenium::startServer()
rd <- remoteDriver(browserName = "phantomjs")
rd$open()
Sys.sleep(5)

rd$navigate("https://www.Facebook.com")
searchBar <- rd$findElement(using = "id", "email")

Я получаю ошибку ниже:

Error:   Summary: NoSuchElement
Detail: An element could not be located on the page using the given search parameters.
class: org.openqa.selenium.NoSuchElementException

Есть мысли о том, что вызывает это? Кажется, не имеет значения, на какую страницу я перехожу; он просто терпит неудачу каждый раз, когда я пытаюсь найти элемент на веб-странице. Эта проблема началась недавно, и я заметил это, когда мои рабочие места cron начали терпеть неудачу.

Я работаю в Ubuntu 14.04 LTS с R 3.3.1 и фантомами 2.1.1. Я не подозреваю о какой-либо проблеме совместимости, поскольку это работало совсем недавно, и я ничего не обновлял.

1 ответ

Решение

Версия phantomjs Вы можете установить могут быть ограничены. Смотрите здесь

  • Отключен Ghostdriver из-за предварительно созданных селеновых капель без источника.
  • Добавлен README.Debian, поясняющий отличия от "phantomjs".

Если вы недавно установили, используя apt-get тогда это скорее всего так. Вы можете скачать с веб-сайта phantomjs и разместить местоположение корзины в вашем PATH.

Альтернативно использовать npm установить версию для вас

npm install phantomjs-prebuilt

Это будет, но ссылка на мусорное ведро в node_modules/.bin/phantomjs,

По причинам, связанным с ограничениями в apt-get, вы можете прочитать файл README.Debian, содержащийся здесь.

Ограничения

В отличие от оригинального бинарного файла "phantomjs", который статически связан с модифицированным QT+WebKit, пакет Debian собран с системой libqt5webkit5. К сожалению, последние не имеют расширений webSecurity, поэтому ожидается, что "--web-security=no" не удастся.

https://github.com/ariya/phantomjs/issues/13727


Ghostdriver поврежден из-за удаленных предварительно собранных BLOB-объектов без исходного кода:

SRC /ghostdriver/ THIRD_PARTY / WebDriver-атомов /*

Поэтому все функциональные возможности PDF нарушены.


PhantomJS не может работать в автономном режиме (если нет доступного X-сервера).

К сожалению, это не может быть исправлено в Debian. Для достижения безголового апстрима статически связывайте с помощью настроенного QT + Webkit. Мы не хотим отгружать вилки этих проектов. Было бы здорово в конечном итоге убедить апстрим использовать стандартные библиотеки. Между тем можно использовать "xvfb-run" из пакета "xvfb":

xvfb-run --server-args="-screen 0 640x480x16" phantomjs

Если вы не хотите указывать путь для phantomjs, вы можете добавить его как дополнительный:

library(RSelenium)

selServ <- startServer()
pBin <- list(phantomjs.binary.path = "/home/john/node_modules/phantomjs-prebuilt/lib/phantom/bin/phantomjs")
rd <- remoteDriver(browserName = "phantomjs"
                   , extraCapabilities = pBin)
Sys.sleep(5)
rd$open()

rd$navigate("https://www.Facebook.com")
searchBar <- rd$findElement(using = "id", "email")

rd$close()
selServ$stop()
Другие вопросы по тегам