量角器元素(..)从单独的文件返回未定义

2024-04-30

我正在编写一个 Protractor 测试,在我的 test.step.js 文件中我有

element(by.css('...')).getText().then(function (text) {
    expect(text).to.equal('expectedText');
});

这按预期工作并通过。

相反,我创建了一个 test.page.js 文件并在其中放入this.field = element(by.css('...'));然后在我的步骤文件中有

"use strict"

module.exports = function exampleTest() {
    var TestPage = require("...");
    var testPage = new TestPage;
    ...
    test.Then(..., function (next) {
       testPage.field.getText().then(function (text) {
          expect(text).to.equal('expectedText');
       });
    });
}

那么字段是未定义的。我还尝试在页面文件中添加 getText() ,但再次未定义或被告知我无法在未定义时调用“then”。

在我看来,这应该与第一个示例执行完全相同的操作,但我远非 Angular 或 JavaScript 专家。

test.page.js 看起来像:

"use strict";

module.exports = (function () {
    function TestPage() {
        this.field = element(by.css('...'));
    }

    return TestPage;
});

希望有人能够阐明为什么会发生这种情况,以及我应该做什么才能将 CSS 选择器放入页面文件中以供重复使用。

Thanks


你的代码new TestPage;返回构造函数TestPage,但它从未被调用过。

您可以返回课程:

function TestPage() {
    this.field = element(by.css('...'));
}

module.exports = TestPage;
var TestPage = require("...");
var testPage = new TestPage;
testPage.field.getText().then(...

或者该类的一个实例:

function TestPage() {
    this.field = element(by.css('...'));
}

module.exports = new TestPage();
var testPage = require("...");
testPage.field.getText().then(...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

量角器元素(..)从单独的文件返回未定义 的相关文章

随机推荐