Karate 空手道用户界面在赛后钩子中的错误截图

Karate 空手道用户界面在赛后钩子中的错误截图,karate,Karate,我有一个UI测试,我想在UI测试失败时捕获屏幕截图。我已经探索了driver.screenshot()的功能,无论何时我想在测试期间拍摄屏幕截图,它都能很好地工作。但是,我只想在测试失败时捕获屏幕截图 我看了一下《赛后》中提到的解决方案: 但是,这要求INFO.erromessage出现在日志文件中 这是我们在我的karate.log文件中看到的示例,我在INFO.errorMessage下找不到正在登录的错误。结构略有不同: 09:49:22.192 [ForkJoinPool-1-work

我有一个UI测试,我想在UI测试失败时捕获屏幕截图。我已经探索了driver.screenshot()的功能,无论何时我想在测试期间拍摄屏幕截图,它都能很好地工作。但是,我只想在测试失败时捕获屏幕截图

我看了一下《赛后》中提到的解决方案:

但是,这要求INFO.erromessage出现在日志文件中

这是我们在我的karate.log文件中看到的示例,我在INFO.errorMessage下找不到正在登录的错误。结构略有不同:

09:49:22.192 [ForkJoinPool-1-worker-3] DEBUG c.intuit.karate.driver.DriverOptions - >> {"method":"Runtime.evaluate","params":{"expression":"document.evaluate(\"\/\/div[@role='option']\", document, null, 9, null).singleNodeValue.click()","returnByValue":true},"id":361}
09:49:22.200 [nioEventLoopGroup-2-1] DEBUG c.intuit.karate.driver.DriverOptions - << {"id":361,"result":{"result":{"type":"object","subtype":"error","className":"TypeError","description":"TypeError: Cannot read property 'click' of null\n    at <anonymous>:1:84","objectId":"{\"injectedScriptId\":2,\"id\":3}"},"exceptionDetails":{"exceptionId":2,"text":"Uncaught","lineNumber":0,"columnNumber":83,"scriptId":"19","stackTrace":{"callFrames":[{"functionName":"","scriptId":"19","url":"","lineNumber":0,"columnNumber":83}]},"exception":{"type":"object","subtype":"error","className":"TypeError","description":"TypeError: Cannot read property 'click' of null\n    at <anonymous>:1:84","objectId":"{\"injectedScriptId\":2,\"id\":4}"}}}}
09:49:22.201 [nioEventLoopGroup-2-1] WARN  c.intuit.karate.driver.DriverOptions - devtools error: [id: 361, result: [type: MAP, value: {type=object, subtype=error, className=TypeError, description=TypeError: Cannot read property 'click' of null
    at <anonymous>:1:84, objectId={"injectedScriptId":2,"id":3}}]]
09:49:22.202 [ForkJoinPool-1-worker-3] ERROR c.intuit.karate.driver.DriverOptions - js eval failed twice:document.evaluate("//div[@role='option']", document, null, 9, null).singleNodeValue.click(), error: {"type":"object","subtype":"error","className":"TypeError","description":"TypeError: Cannot read property 'click' of null\n    at <anonymous>:1:84","objectId":"{\"injectedScriptId\":2,\"id\":3}"}
**09:49:22.207 [ForkJoinPool-1-worker-3] ERROR com.intuit.karate - feature call failed: classpath:AMUI/EndToEndTests/CreateAgreement.feature
arg: {"shared_agrname":"TEST_57059","local_agrname":"TEST_57059","agr_type":"CSA"}
CreateAgreement.feature:76 - evaluation (js) failed: click("//div[@role='option']"), java.lang.RuntimeException: js eval failed twice:document.evaluate("//div[@role='option']", document, null, 9, null).singleNodeValue.click(), error: {"type":"object","subtype":"error","className":"TypeError","description":"TypeError: Cannot read property 'click' of null\n    at <anonymous>:1:84","objectId":"{\"injectedScriptId\":2,\"id\":3}"}
stack trace: com.intuit.karate.driver.DevToolsDriver.eval(DevToolsDriver.java:300)**
09:49:22.596 [pool-1-thread-1] INFO  com.intuit.karate.Runner - <<fail>> feature 41 of 42: classpath:AMUI/EndToEndTests/CSA.feature
但这没有帮助。它没有截图

这里的任何建议都会很有帮助


日志文件中是否也会出现这种情况?没有在info.errorMessage结构下捕获UI错误?到目前为止,我在测试中还没有看到在这个结构中捕获到任何错误。框架是以这种方式捕获的,还是由测试中的应用程序负责的?

karate.info.errorMessage
与日志级别无关,请阅读示例:

我认为问题在于我正在尝试捕获使用呼叫调用的功能的屏幕截图,而karate.info在文档中明确提到的情况下不起作用。感谢@Peter的回复。如果我们想捕获所调用功能中错误的屏幕截图,在这种情况下是否有解决方法?@Mihir如果您使用挂钩,但已打开功能请求,则可能是可行的:谢谢:)@Peter@Mihir嗯。无论如何,这个功能已经实现了,所以如果可能的话,一定要从
develope
分支尝试一下。不幸的是,它没有进入0.9.9.RC1
 * configure afterScenario = function(){ if (karate.ERROR.arg) driver.screenshot() }