Как использовать RSelenium для управления браузером и перемещения в картографическом приложении?

#html #web-scraping #rselenium

Вопрос:

Я пытаюсь использовать RSelenium для навигации это приложение для онлайн-карт (https://www.dsec.gov.mo/gis/unidade/unidade.html?lang=en). В браузере я могу либо нажимать клавиши со стрелками, либо удерживать клавишу щелчка левой кнопкой мыши и перетаскивать, чтобы переместить отображаемую область карты.

Однако мне не удалось повторить те же маневры с помощью RSelenium драйвера Firefox. Вот что я пытался сделать до сих пор.

 library(RSelenium)

rD <- rsDriver(browser="firefox", port = 4542L)
remDr <- rD[["client"]]

remDr$open()
remDr$navigate("https://www.dsec.gov.mo/gis/unidade/unidade.html?lang=en")

# unable to scroll the window (no scrolling bar in the outermost window though)
remDr$executeScript("window.scrollBy(0, -50)")

# locate what seems to be container of the map
webElem <- remDr$findElement("tag name", "canvas")
webElem$highlightElement()

webElem$click()
webElem$sendKeysToElement(list(key = "down_arrow")) 
webElem$executeScript("window.scrollBy(0,250)", args = list("")) # nothing happens
 

Наблюдая за тем, как меняется html-скрипт во время операции панорамирования в браузере, я заметил, что атрибут data-interacting переключается с false на true и возвращается к false , когда панорамирование завершено.

 <div class="esri-view-surface esri-view-surface--inset-outline esri-view-surface--touch-none" role="application" tabindex="0" data-cursor="crosshair" data-interacting="false"><canvas style="width: 982px; height: 804px; display: block;" width="982" height="804"></canvas></div>
 

Я не знаком с архитектурой веб-сайта или Javascript. Любая информация о том, как перемещаться по этой карте с помощью R, была бы весьма признательна.

Комментарии:

1. down_arrow , home , end кнопка не будет работать на этой странице. Я смог нажать только - символы и на странице.

2. На моем компьютере, когда карта «активирована», я могу нажимать клавиши up arrow со стрелками и другие клавиши со стрелками для навигации по карте.

3. Конечно, вы можете нажать на up arrow кнопку, но я думаю, что мы не можем нажать up arrow на кнопку RSelenium

4. Является ли эта проблема специфичной для RSelenium, что нажатие кнопки up arrow не может быть смоделировано? А как насчет Селена в целом?

5. Для селена, я думаю, мы можем нажать стрелку вверх