【问题标题】:Catch R Selenium error message and write it to log捕获 R Selenium 错误消息并将其写入日志
【发布时间】:2019-07-01 08:14:54
【问题描述】:

我通过 RSelenium 安排了一些刮擦。有时抓取失败,我想知道原因。 我注意到错误消息(红色)非常有用,但我不知道如何记录它们。

假设我提供了一个“格式不正确的 URL”。:

tryCatch(
  expr = remDr$navigate("i.am.not.an.url"),
  error = function(error){
    print(error)
    # write.table(error, file = ...)
  }  
)

这是我得到的,但它并没有给出触发错误的详细说明

<simpleError:    Summary: UnknownError
Detail: An unknown server-side error occurred while processing the command.
class: org.openqa.selenium.WebDriverException
Further Details: run errorDetails method>

这是更多信息 - 但我无法记录它。

Selenium message:Target URL i.am.not.an.url is not well-formed.
Build info: version: '2.53.1', revision: 'a36b8b1', time: '2016-06-30 17:37:03'
System info: host: '9bc48e7a4511', ip: '172.17.0.4', os.name: 'Linux', os.arch: 'amd64', os.version: '4.4.0-1087-aws', java.version: '1.8.0_91'
Driver info: driver.version: unknown

我尝试了什么:

使用错误处理类。它包括非常详细的错误消息规范及其含义,但鉴于我当前的错误,我无法提取它们。

errHandle = errorHandler(remDr)
errHandle$checkStatus(remDr)
errHandle$checkError(res = remDr)

使用来自另一个 #SO 问题的消息处理程序:

messageHandler <- function(fun, ...) {
  zz <- textConnection("foo", "w", local = TRUE)
  sink(zz, type = "message")
  res <- fun(...)  
  sink(type = "message")
  close(zz)
  #handle messages
  list(res, messages = foo) 
}

wrongURL <- function() {
  remDr$navigate("mistake")
}

messageHandler(fun = wrongURL)

【问题讨论】:

    标签: r selenium rselenium


    【解决方案1】:

    我通过errorDetails()找到了一种方法:

    tryCatch(
      expr = remDr$navigate("i.am.not.an.url"),
      error = function(error){
        return(remDr$errorDetails()$localizedMessage)
      }  
    )
    

    【讨论】:

      猜你喜欢
      • 2022-01-08
      • 2020-04-20
      • 1970-01-01
      • 2014-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-02
      相关资源
      最近更新 更多