如何在 webdriverIO 测试中导入和使用静态 javascript 对象?

How to import and use static javascript object in webdriverIO testing?

我正在尝试测试元素中存在的一些值,这些值存储在静态对象中,这就是我正在采用的方法。

文件 - someObjects.js(存储静态对象)

class SomeObjects {
    static headers = {
        header1: "Something",
        header2: "Something else",
    };
}
export default SomeObjects;

现在我想检查某个元素是否与 header1 匹配。所以这是我的测试文件 运行

import SomeObjects from "../../SomeObjects";

const HomePage = require('../../HomePage');

describe("", () => {

    it("", () => {
        HomePage.open()
        const title = browser.$('#title');
        expect(title).toHaveText(SomeObjects.headers.header1);
    });
});

然而,这根本行不通。任何有关此的帮助将不胜感激,谢谢。 P.S。这是我在 运行 测试中收到的错误消息。 [0-0] Error: Unable to load spec files quite likely because they rely on 浏览器 object that is not fully initialised.

我发现的最好的 Cypress 方式是 - Fixture

对于您的示例 - 您可以在 json 文件中添加对象 - 例如 myFixture.json - 位于 fixtures 文件夹中:

{
    "header": {
        "header1": "Something",
        "header2": "Something else",
    };
}

然后在测试中:

describe("", () => {

    it("", () => {
        HomePage.open()
        const title = browser.$('#title');
        cy.fixture('myFixture.json')
            .then(object =>{
                expect(title).toHaveText(object.headers.header1);
            })

    });
});

看起来您在导出 class 时错过了 new 关键字和大括号 (),您的代码应该类似于这个..

class SomeObjects {
   static headers = {
       header1: "Something",
       header2: "Something else",
    };
}
export default new SomeObjects();

这也可以使用常量 class 或使用 json 文件来实现。你会在我的个人 webdriverio git 回购 WDIO6_TypeScript_BDD

中找到几个例子