Сбой RSelenium после нажатия элемента () на Windows 10 - PullRequest
0 голосов
/ 02 апреля 2020

Я работаю с версией R 3.6.2 на Windows 10. Я предскажу этот пост, отметив, что я все еще новичок в R & программировании в целом, и любая помощь или доброта будут высоко оценены:)

Для моего текущего проекта я использую RSelenium (и Docker), чтобы программно извлечь код участка и графства для данного адреса с веб-сайта геокодирования FF IEC: https://geomap.ffiec.gov/FFIECGeocMap/GeocodeMap1.aspx

Код

Перед запуском следующего кода я запускаю Docker Рабочий стол. Тогда:

shell('docker run -d -p 4445:4444 selenium/standalone-chrome')


library(RSelenium)


remDr <- remoteDriver(remoteServerAddr = "localhost",
                      port = 4445L,
                      browserName = "chrome")

remDr$open()
remDr$navigate("https://geomap.ffiec.gov/FFIECGeocMap/GeocodeMap1.aspx")

## Input Address Info & Click Button
address_element <- remDr$findElement(using = 'css selector', value = "#Address")
address_element$sendKeysToElement(list("800 W Olympic Blvd, Los Angeles, CA 90015"))

button_element <- remDr$findElement(using = 'css selector', value = '#btnSearch')
button_element$clickElement()

Вплоть до здесь я не получаю ошибок. Однако, независимо от того, что я запускаю после button_element $ clickElement () - будь то remDr $ screenshot (display = TRUE) или запускаю остальную часть кода:

tract.out <- remDr$findElement(using = 'css selector', value = "#TractCode")
tract.code <- tract.out$getElementText()
county.out <- remDr$findElement(using = 'css selector', value = "#CountyCode")  
county.code <- county.out$getElementText()

remDr$close()

Я получаю следующую ошибку (ошибка появляется сразу после tract.out , что заставляет меня думать, что страница падает после button_element $ clickElement ):

"Сообщение Selenium: неизвестная ошибка: сеанс удален из-за сбоя страницы на вкладке (информация сеанса: chrome = 80.0.3987.149) Информация о сборке: версия: '3.141.59', версия: 'e82be7d358', время: '2018-11-14T08: 25: 53' Система информация: хост: 'be3eb420581f', ip: '172.17.0.2', os.name: 'Linux', os.arch: 'amd64', os.version: '4.19.76-linuxkit', java. версия: '1.8.0_242' Информация о драйвере: driver.version: неизвестно

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

У кого-нибудь есть идея относительно того, что может быть причиной этого? Я поиграл с различными уровнями адресной строки и элементами кнопок, CSS Селекторы и XPaths. Есть ли что-то вопиющее, что я упускаю?

Буду признателен за любые указания или дополнительные ресурсы !!

1 Ответ

0 голосов
/ 02 апреля 2020

Так что после еще нескольких копаний я разобрался с быстрым решением. Очевидно, при запуске контейнера docker используйте том 'dev / shm' (см. Фрагмент кода ниже).

Для получения дополнительной информации обратитесь к: https://github.com/SeleniumHQ/docker-selenium/issues/589 https://github.com/SeleniumHQ/docker-selenium#running -the-images

Вот исправление:

shell('docker run -d -p 4444:4444 -v /dev/shm:/dev/shm selenium/standalone-chrome:3.141.59-20200326')

library(RSelenium)

remDr <- remoteDriver(remoteServerAddr = "localhost",
                      port = 4444L,
                      browserName = "chrome")

Вот и все! С этими небольшими изменениями остальная часть кода работает отлично.

...