How to type text on a website using a for-loop in RSelenium

Viewed 33

I would like to archive over 200 links on the wayback machine. I have all the links scraped and created a loop so the driver can type all the links individually and save them on the website. The loop runs once and then doesn't run again. Suggestions on a fix?

library(rvest)
library(tidyverse)
library(RSelenium); library(netstat)

# get men's links with rvest
pageMen = read_html('https://www.bjjcompsystem.com/tournaments/1869/categories')
mget_links <- pageMen %>% 
  html_nodes('.categories-grid__category a') %>% 
  html_attr('href') %>%
  paste0('https://www.bjjcompsystem.com', .)

# start server
remote_driver = rsDriver(browser = 'firefox',
                         verbose = F,
                         port = free_port())
rd = remote_driver$client
rd$open()
rd$navigate('https://web.archive.org/save')
rd$maxWindowSize()

for (i in length(mget_links[10:259])){
  save_page_box = rd$findElement(using = 'xpath', '//*[(@id = "web-save-url-input")]')
  save_page_box$clickElement()
  save_page_box$sendKeysToElement(list(mget_links[i], key='enter'))

Sys.sleep(40)

return.to.save.page = rd$findElement(using = 'link text', 'Return to Save Page Now')
return.to.save.page$clickElement()
}

1 Answers

use 1:length(mget_links[11:259] instead of length(mget_links[11:259]

for (i in 1:length(mget_links[11:259])){
  save_page_box = rd$findElement(using = 'xpath', '//*[(@id = "web-save-url-input")]')
  save_page_box$clickElement()
  save_page_box$sendKeysToElement(list(mget_links[i], key='enter'))

Sys.sleep(30)

return.to.save.page = rd$findElement(using = 'link text', 'Return to Save Page Now')
return.to.save.page$clickElement()
rd$navigate('https://web.archive.org/save')
}
Related