I would be extremely grateful for any help with the following.
Using rselenium, I am trying to iterate through, in increments of 500, a series of records from 1 to n, while exporting each batch. Each time, it has to clear the existing numbers from the box or 'ctrl' + 'a' and overtype what is there. See the picture below.
remdr$navigate("somewebsite.com")
webElem1 <- remdr$findElement(using = "css selector", "#markFrom") #selects the element for the first number
webElem1$clickElement() # clicks on that element
### it is here I would like to loop through the numbers, increasing 500 at a time (it must clear the previous selection each time, or reload a new instance of the page
webElem1$sendKeysToElement(list("1001", key = "tab", "1500")) # enters numbers into elements
# then export each batch of 500
webElem2 <- remdr$findElement(using = "css selector", "#exportTypeName") # selects the type of file to export
webElem2$clickElement() # clicks on selection
webElem3 <- remdr$findElement(using = "css selector", "#exportButton") # exports selection
webElem3$clickElement()
I'm not sure I fully understand the issue. Is it just the looping part you're having difficulty with? In that case, you can just wrap the whole piece into a loop function that increments the records by 500 each time.
#Set start, end and steps
start = 1
n = 1200
steps = 500
#Loop through
records = c(seq(start, n, steps), (n+1))
for(x in 1:(length(records)-1)){
# This is example of the line you like to edit
# .. prev code ...
# webElem1$sendKeysToElement(list(as.character(records[x]), key = "tab", as.character(records[x+1] -1)))
# ... next code ...
#Remove this, just for showing what it'd look like
print(sprintf("webElem1$sendKeysToElement(list(%s, key = \"tab\", %s))",
as.character(records[x]), as.character(records[x+1] - 1)))
}
#> [1] "webElem1$sendKeysToElement(list(1, key = \"tab\", 500))"
#> [1] "webElem1$sendKeysToElement(list(501, key = \"tab\", 1000))"
#> [1] "webElem1$sendKeysToElement(list(1001, key = \"tab\", 1200))"
Yes, I took your idea and changed it slightly. The issue was me being new to looping.
Here was my solution:
for (i in 0:99){
# clear out elements
webElem2 <- remdr$findElement(using = "css selector", "#markFrom") #selects the element for the first number
webElem2$clearElement()
webElem3 <- remdr$findElement(using = "css selector", "#markTo") #selects the element for the first number
webElem3$clearElement()
# here, my code clicks on the web element of interest
webElem4 <- remdr$findElement(using = "css selector", "#markFrom") #selects the element for the first number
webElem4$clickElement() # clicks on that element
# this enters the values for the records to be downloaded. In this case 1 - 500
webElem4$sendKeysToElement(list(paste(i*500+1), key = "tab", paste(i*500+1+500-1))) # enters numbers into elements
# this is the sequence of clicks to download the data
webElem5 <- remdr$findElement(using = "css selector", "button.quickOutputOther") # selects the type of file to export
webElem5$clickElement() # clicks on selection
webElem6 <- remdr$findElement(using = "css selector", "#exportButton") # exports selection
webElem6$clickElement()
}