Выполнить исходный код в случае сбоя цикла (RSelenium)

Я написал цикл, чтобы проверить кучу ссылок и сделать скриншоты. Мне часто приходится делать это тысячами. Созданный мной цикл работает примерно с 500 ссылками, затем мой браузер закрывается, и я получаю следующую ошибку:

    Error: Summary: UnknownError
    Detail: An unknown server-side error occurred while processing the command.
    class: org.openqa.selenium.remote.UnreachableBrowserException 

Есть ли способ предотвратить это?

Если нет, как я могу заставить R запускать исходный код OpenBrowser.R, если это произойдет?

Вот сценарий:

    for(i in 1:nrow(URL)){      
         remDr1$navigate(URL$Link[i])
         remDr1$setTimeout(type = "page load", milliseconds = 30000)
         remDr1$screenshot(file = URL$file[i])
         }

person yake84    schedule 19.01.2016    source источник
comment
Взгляните на tryCatch или purrr:safely   -  person hrbrmstr    schedule 19.01.2016
comment
Я не мог понять, как работает tryCatch. Не могли бы вы опубликовать пример того, как я бы использовал его в этом коде?   -  person yake84    schedule 19.01.2016


Ответы (1)


Мало что можно попробовать, например: -

Попробуйте эту функцию: - (она будет ждать полной загрузки страницы. При необходимости вы можете удалить page_load_time_out или сделать в Inf)

wait_till_page_load<-function(page_load_time_out=60){
  t0<-Sys.time()
  while(remDr$executeScript("return document.readyState;")[[1]]!="complete" & (Sys.time()-t0)<=page_load_time_out){
    Sys.sleep(0.5)
  }
  invisible(0)
}

Используйте это как: -

for(i in 1:nrow(URL)){      
         remDr1$navigate(URL$Link[i])
         #remDr1$setTimeout(type = "page load", milliseconds = 30000)
         wait_till_page_load(500000000) # use suitable number
         try(remDr1$screenshot(file = URL$file[i]))
}

Попробуйте предотвратить разрыв петли.

person Indranil Gayen    schedule 19.01.2016