r - 捕获 R Selenium 错误消息并将其写入日志
问题描述
我通过 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)
解决方案
我找到了一种方法errorDetails()
:
tryCatch(
expr = remDr$navigate("i.am.not.an.url"),
error = function(error){
return(remDr$errorDetails()$localizedMessage)
}
)
推荐阅读
- java - 如何使用 when() 解决这个 Mockito MissingMethodInvocationException ...?
- vue.js - 从父 vue 组件上的按钮调用子方法
- postgresql - 在视图中输入数据时创建 SQL 触发器以更新表
- gluon - Gluon Client Plugin Android 应用程序的大小真的很大
- azure-devops - 用于运行两个或更多独立管道的 Azure 管道
- c++ - Stack Linked List pop() 和 isEmpty() 不起作用,不知道错误在哪里
- f# - FsCheck 不使用注册的 Arbs/Gens
- flutter - Flutter:是否可以使用 nfc_in_flutter 包进行 P2P 连接?
- django - 从多个字段中删除重复项并在 Django 中返回查询集
- javascript - 关于 ClosureOnModifiedVariable 的 ReSharper 警告 - 为什么?