Я пытаюсь взаимодействовать со всеми элементами списка в R. Точно, я пытаюсь щелкнуть по всем элементам в списке, используя RSelenium, используя функцию clickElement (). Я собираю данные с этой веб-страницы: https://play.google.com/store/apps/details?id=hr.mireo.arthur&hl=en&fbclid=IwAR3c-PkUXOea8KrKLp9Q3JUjCidGmgO2jYX_Qb7O8VuWlHXPIS5nDOfKRKI&showAllReviews=true
Вот мой код:
url <- 'https://play.google.com/store/apps/details?id=hr.mireo.arthur&hl=en&fbclid=IwAR3c-PkUXOea8KrKLp9Q3JUjCidGmgO2jYX_Qb7O8VuWlHXPIS5nDOfKRKI&showAllReviews=true'
#Open webpage using RSelenium
rD <- rsDriver(port = 4445L, browser=c("chrome"), chromever="80.0.3987.106")
remDr <- rD[["client"]]
remDr$navigate(url)
#-----------------------------------------Load whole page by scrolling and showing more
xp_show_more <- "//*[@id='fcxH9b']/div[4]/c-wiz/div/div[2]/div/div[1]/div/div/div[1]/div[2]/div[2]/div"
replicate(5,
{
replicate(5,
{
# scroll down
webElem <- remDr$findElement("css", "body")
webElem$sendKeysToElement(list(key = "end"))
# wait
Sys.sleep(1)
})
# find button
morereviews <- remDr$findElement(using = 'xpath', xp_show_more)
# click button
tryCatch(morereviews$clickElement(),error=function(e){print(e)}) # trycatch to prevent any error from stopping the loop
# wait
Sys.sleep(3)
})
Этот код загрузит всю страницу и покажет все комментарии, но некоторые комментарии длинные и имеют кнопки «Полный обзор», которые нужно нажимать, чтобы показать всю длину комментария. Мне удалось найти все эти кнопки (их 36), используя функцию «findElements» с следующим кодом:
fullreviews <- remDr$findElements(using = 'css selector', value = ".OzU4dc")
Этот код приводит к списку из 36 элементов, и когда я хочу нажать на они используют этот код:
fullreviews$clickElement()
Я получаю эту ошибку: Ошибка: попытка применить не-функцию
Я могу нажать на все 36 элементов, используя эти 36 строк кода:
fullreviews[[1]]$clickElement()
fullreviews[[2]]$clickElement()
fullreviews[[3]]$clickElement()
... и так далее до 36.
Но я бы хотел сделать это возможным с помощью одной функции. На случай, если мне придется почистить большую веб-страницу и нажать тысячи элементов.
Я пробовал этот код, но он не работает
fullreviews[[1:36]]$clickElement()
Я думаю, что-то вроде ошибки нужна функция, но я не могу создать работающую. Есть ли способ сделать это в одной функции l oop или функции?