gpt4 book ai didi

javascript - 在 iOS 的 UIAutomation UIATarget.onAlert 中处理自定义 javascript 异常

转载 作者:行者123 更新时间:2023-11-30 13:04:14 26 4
gpt4 key购买 nike

我已经设置了一些最终将成为 jenkins 测试的 UIAutomation 脚本。 UIAutomation 脚本不以 jenkins 友好的格式输出,所以我使用 tuneup_js ,特别是这个 failure exception .

当测试失败时,我可以抛出一个自定义的 FailureException。正常捕获异常并正确记录故障输出。输出为 Error: FailureException: "hello world"

当我尝试在 onAlert 处理程序中抛出相同的 FailureException 时,我的问题就出现了,UIATarget.onAlert = function onAlert(alert) {...} 。在我的 onAlert 函数中,如果标题与某个正则表达式匹配,我会抛出一个 FailureException,但从未捕获到 FailureException 并且测试崩溃以下输出:

Script threw an uncaught JavaScript error: hello world on line 18 of assertions.js

关于如何将此 FailureException 抛入 onAlert 处理程序并正确处理它的任何想法?似乎 onAlert 是在与其余测试不同的范围内处理的,但我不确定如何纠正它。

最佳答案

这里的核心问题是 js 异常并不像事件循环那样真正与异步代码一起工作(这就是为什么你很少在“现代 javascript”代码中看到抛出的异常,人们反而使用错误回调)。

如果您查看 tuneup_js 中的 test 函数,它会捕获由 fail 抛出的异常,然后调用 UIALogger.logFailUIATarget.onAlert 将响应一些顶级警报事件并在该上下文中运行,在测试函数之外,因此触发异常意味着它不会被 try/catch block 捕获测试

一个可行的方法是使用闭包将数据返回给调用者,例如:

test("My UI Test", function(app, target) {
var failureName = null;
setupOnAlert(function(name) {
failureName = name;
});
// do something that might trigger a UIAlert
if (failureName) {
fail(failureName);
}
});

function setupOnAlert(fail_callback) {
UITarget.onAlert = function(alert) {
// do something that may fail, if it fails:
fail_callback("Some kind of error");
}
}

希望对您有所帮助!

关于javascript - 在 iOS 的 UIAutomation UIATarget.onAlert 中处理自定义 javascript 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16289548/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com