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()