简要描述您遇到的问题(或您希望看到添加到 WebdriverIO 的功能)。 告诉我们您试图做什么以及发生了什么。 请记住,这_不是_一个提问的地方。 为此,请加入 Gitter 聊天室( )!
我尝试使用 Gitter,但没有人回应。
如有必要,请更详细地描述您遇到的问题。
如果页面上有 javascript 错误,我希望我的测试失败。
不? 测试通过就好了,这就是问题所在。
请记住,使用示例代码; 重现错误更容易,修复它也更快。
也许加载一个页面和 onload = function () { 抛出“这个测试失败!” }
然后运行仅访问该页面的测试,并查看测试仍然通过,即使在控制台中会创建 javascript 错误。
在我看来,这是一个非常基本的用例。 我相信 .Net selenium 套件有一个选项。 在 PHP 和 Codeception 中,我附加到每个“步骤”,就像 wdio 中的每个命令一样,无论是 waitFor* 或 getText 还是 url(),并且每一步我都会检查冒泡到 window.onerror 的错误。 有没有办法在 wdio 的每一步运行一个函数?
我想有可能做这样的事情:
window.onerror = function () {
document.write('');
}
这将导致下一步失败。 但这似乎有点不可靠。
这当然与命令一致:
beforeSuite(() => browser.execute(...));
完美谢谢! 我会用我的解决方案发回,使其无法通过测试
也许我们可以在文档中找到用例!!
如果有错误,关于如何使测试失败的任何建议?
我尝试了聊天但被忽略了。
这是一个问题,因为这是一个非常常见的用例,并且完全没有记录。
这是我在另一个站点和 Codeception 上使用的 javascript 错误检查器的想法,现在可以与 Angular 和 wdio 一起使用:
beforeCommand: function (commandName, args) {
if (browser.getUrl().indexOf(this.baseUrl) > -1) {
browser.execute(function () {
if (window.wdioErrorHandler !== window.onerror) {
const oldHandler = window.onerror;
window.windowErrors = [];
window.onerror = window.wdioErrorHandler = function (err) {
window.windowErrors.push(err + '');
if (typeof oldHandler === 'function') {
oldHandler.apply(this, arguments);
}
}
}
})
}
},
afterCommand: function (commandName, args, result, error) {
if (browser.getUrl().indexOf(this.baseUrl) > -1) {
const errors = browser.execute(function () {
return window.windowErrors;
});
if (errors.value !== null && errors.value.length > 0) {
throw new Error('Javascript errors! ' + errors.value);
}
}
}
如何故意使来自 afterCommand 块的命令失败? 我需要测试失败,但即使有throw
,它仍然说测试通过。
文档中是否有我们可以放一些关于如何使用钩子的例子? 也许在调试部分?
此搜索并没有真正显示任何有用的内容: https :