gpt4 book ai didi

javascript - 如何在 CodeceptJS 和 NightmareJS 中将条件应用于 E2E 测试

转载 作者:行者123 更新时间:2023-12-03 00:02:29 26 4
gpt4 key购买 nike

我需要什么:

在 CodeceptJS 中使用 Nightmare 作为主要帮助程序进行 E2E 测试,验证元素是否存在,并根据结果继续执行一系列操作或其他操作。

示例代码:

class EventsHelper extends Helper {

isExistsElement(selector) {
let browser = this.helpers['Nightmare'].browser;
return browser.evaluate((selector) => {
return new Promise(resolve => {
let element = document.querySelector(selector);
resolve(element || false);
});
}, selector);
}
}
module.exports = EventsHelper;
<小时/>
Scenario('Test 1', async (I) => {
const isButtonRendered = await I.isExistsElement('#button');

if (isButtonRendered) {
I.see('Message that is displayed only if the button exists.');
I.click('#button');
} else {
I.see('Alternative message that appears if this button does not exist.');
}
});

此示例代码的当前结果是:- 如果按钮存在。

Evaluation timed out after 30000msec.  Are you calling done() or resolving your promises?
  • 否则该按钮不存在:通过。
<小时/>

我愿意接受建议、更正或不同的想法来解决这个问题。谢谢你们! (如果我的英语不是很清楚,请原谅)。

最佳答案

您必须对条件本身使用自定义帮助器,根据 codeceptjs 开发人员的说法,他们不支持主场景函数内的条件。

这是一个自定义帮助器示例:

'use strict';
import assert from 'assert';

let Helper = codecept_helper;

class MyHelper extends Helper {
async clickIfVisible(selector, ...options) {
const helper = this.helpers['Puppeteer'];
try {
const numVisible = await helper.grabNumberOfVisibleElements(selector);

if (numVisible) {
return helper.click(selector, ...options);
}
} catch (err) {
console.log('Skipping operation as element is not visible');
}
}
}

module.exports = MyHelper;

更多信息:https://github.com/Codeception/CodeceptJS/issues/648

关于javascript - 如何在 CodeceptJS 和 NightmareJS 中将条件应用于 E2E 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55112016/

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