2017-02-23 114 views
1

Я перепробовал все способы автоматизации выбора выпадающий в Rselenium? В частности, я могу выбрать раскрывающийся список с помощью findElement, но как выбрать один из них?RSelenium-Ошибка в доступе выпадающие элементы в то время как веб-отвесный

http://localizador.extra.com.br/storeSearch/?organization=EXTRA

Я пытаюсь скрести этот сайт.

Код, который я пробовал.

for(i in 2:15){ 
#This part of code is not able to change the option in dropdown 
webElem1a <- remDr$findElements(using='xpath',paste("//[@id='state']/option[",i,"]")) 
webElem1a$clickElement() 
loadmorebuttons<- remDr$findElement(using = 'css selector',".hidde") 
loadmorebuttons$clickElement() 

Sys.sleep(5) 


#Below this code works properly 
#Check the total Number of stores Available 
    webElem1a<-remDr$findElements(using = 'css selector',".storesFound") 
    Total_stores<-unlist(lapply(webElem1a,function(x){x$getElementText()})) 
    Total_stores<-as.numeric(Total_stores) 

#Load More view 
    if(Total_stores >= 7){ 
    for(j in 1:58){ 
     abc<-remDr$findElement(using = 'css selector',".moreResults") 
     abc$clickElement() 
    } 
    }else{ 
    print("") 
    } 

ответ

1

Вы можете использовать selectTag метод:

library(RSelenium) 

rD <- rsDriver(verbose = F) 
remDr <- rD$client 
remDr$navigate("http://localizador.extra.com.br/storeSearch/?organization=EXTRA") 
selElem <- remDr$findElement("id", "state") 
opts <- selElem$selectTag() 
opts$elements[[2]]$clickElement() 

rm(rD) 
gc() 
+0

Большое спасибо @jdharrison. Это решило мою проблему. – Shubham

+0

Использование 'opts $ elements [[2]] $ clickElement()' заканчивается ошибкой 'Ошибка: попытка применить не-функцию'. Как я могу это решить? –