gpt4 book ai didi

javascript - Selenium 可以注意到脚本错误吗?

转载 作者:行者123 更新时间:2023-11-30 06:05:58 25 4
gpt4 key购买 nike

我现在正在使用 Selenium,我想知道是否可以让 Selenium 发现是否存在脚本错误。

我意识到处理脚本错误需要流量控制,而 Selenium IDE 没有。我也意识到,如果错误很严重,那么测试用例肯定会失败,而我们就是这样。不过,我希望 Selenium 至少能够以某种方式将它们存储在某个地方。

我们在 Firefox 和 IE 中运行我们的测试,所以我们可以使用 window.onerror 来记录错误。但是,我不确定如何将它集成到 Selenium 中。据我所知,记录器将其处理程序附加到 window.document,而我们需要附加到 window 本身。我试图从用户扩展文件中装饰 Recoreder.prototype.attach 以自己添加一个处理程序,但它相当笨拙并导致 IDE 中出现奇怪的行为(就像没有任何记录,所以我可能做了错了)。

有什么想法吗?

最佳答案

我对 Selenium 进行了足够深入的研究,得到了一个很好的答案。

装饰 Recorder.prototype.attachRecorder.prototype.detach 效果很好;您只需将自己附加到 window.onerror 事件,就可以很好地了解您的页面上发生了什么样的坏事。当需要对错误采取行动时,问题就来了。有两种选择:

  • 创建一个自定义命令,检查自上次调用以来是否有错误;
  • 编辑 Selenium 的源代码,使其在每个新命令之前检查最后一个命令是否有错误。

无法使用扩展实现后者,因为您需要更改其行为的文件是在扩展文件之后加载的。

以下是如何从用户扩展中修饰适当的函数:

function decorate(decoratee, decorator) {
var decorated = function() {
decorator.apply(this, arguments);
if (decoratee && decoratee.apply)
decoratee.apply(this, arguments);
}
decorated.base = decoratee;
decorated.decorator = decorator;
return decorated;
}

Recorder.prototype.attach = decorate(Recorder.prototype.attach, function() {
var win = this.getWrappedWindow();
win.onerror = decorate(win.onerror, function(message, file, line) {
// do something with the error
});
});

Recorder.prototype.detach = decorate(Recorder.prototype.detach, function() {
var win = this.getWrappedWindow();
win.onerror = win.onerror.base;
});

关于javascript - Selenium 可以注意到脚本错误吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4670481/

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