如何解决“错误:功能超时,确保承诺在60000毫秒内解析”

时间:2019-07-12 13:00:42

标签: javascript angularjs promise protractor cucumber

我正在使用protractor-cucumberjs框架进行自动化测试。而且我在运行测试时遇到了一个问题,尤其是当我尝试与DOM交互(例如单击按钮)时。

我已经在网上检查是否有解决此问题的方法,但是我尝试了所有操作(增加defaultTimeOut),但没有成功。

我在TypeScript中写了我的黄瓜步骤,并使用babel将ts转换为ES5,因为我使用的是NodeJs版本:7.4.0

这是我在TS中的黄瓜步骤:

When('L\'utilisateur coche {string} sur la checkbox', async(string) => {
    await element(by.id(string)).click();
});

这是ES5中的转换ts:

cucumber_1.When('L\'utilisateur coche {string} sur la checkbox', function (string) { return __awaiter(_this, void 0, void 0, function () {
    return __generator(this, function (_a) {
        switch (_a.label) {
            case 0: return [4 /*yield*/, protractor_1.element(protractor_1.by.id(string)).click()];
            case 1:
                _a.sent();
                return [2 /*return*/];
        }
    });
}); });

输出为:

Error: function timed out, ensure the promise resolves within 60000 milliseconds

我不明白为什么,我什至在测试过程中拍摄了chrome的屏幕截图,并且可以看到渲染已完全完成。

感谢您的帮助。

亚历山大·布德(

编辑:

这是我的新测试:

Given('L\'utilisateur se déplace sur la page {string}', function (string) {
    // Write code here that turns the phrase above into concrete actions
    return browser.get(browser.baseUrl + string);
});

When('L\'utilisateur coche {string} sur la radiobox', function (string) {
    // Write code here that turns the phrase above into concrete actions
    return element(by.id(string)).click();
});

When('L\'utilisateur ajoute {string} dans le champ {string}', function (string, string2) {
    // Write code here that turns the phrase above into concrete actions
    return element(by.id(string2)).sendKeys(string1);
});

When('L\'utilisateur clique sur le bouton {string}', function (string) {
    // Write code here that turns the phrase above into concrete actions
    return element(by.id(string)).click();
});

When('L\'utilisateur sélectionne le logiciel LAD qui a pour code {string}', function (string) {
    // Write code here that turns the phrase above into concrete actions
    return element(by.id(string)).click();
});

When('L\'utilisateur sélectionne le type de messagerie {string}', function (string) {
    // Write code here that turns the phrase above into concrete actions
    return element(by.id(string)).click();
});

When('L\'utilisateur coche {string} sur la checkbox', function (string) {
    // Write code here that turns the phrase above into concrete actions
    return element(by.id(string)).click();
});

Then('Le bouton {string} est enabled', function (string) {
    // Write code here that turns the phrase above into concrete actions
    return expect(element(by.id(string)).isEnabled()).to.equal(true);;
});

我有同样的问题(功能超时)

0 个答案:

没有答案