testing - 在页面模型中将参数传递给 TestCafe Selector

标签 testing automated-tests parameter-passing testcafe custom-selectors

我想将一个字符串传递给页面模型中的一个对象,以供 .withText 选择使用。我可以使用该页面上的函数来执行此操作并且它可以工作,但我必须以不同于页面上定义的对象的方式调用它。

我试过为 .filter(和 .find)使用 FilterFn,但没有成功。也许这正是我所需要的,但需要帮助,或者我只是想多了。

示例页面模型摘录

export class AreaPage {
    public pageTitle = Selector("#container h1").withText("My Area Title");

    public async pageSubtitle(areaName: string) {
        return await Selector("#container h2").withText(areaName);
    }
}

示例测试摘录

test("test some code", async (t) => {
    await t
    .click(areaPage.pageTitle)
    .click(await areaPage.PageSubtitle("my subtitle"));
}

当然,我可能不想“单击”这些标题,但它演示了必须如何调用这些页面组件的不同之处。我也知道我可以捕获对象并在测试中进行验证,但这会破坏我正在尝试做的部分工作。

如上编写,它有效,但我希望我们的 QA 人员能够以相同的方式使用它们(即没有在测试的最后一行嵌入“await”)。如果我删除 await,我会得到错误:

Argument of type 'Promise<Selector>' is not assignable to parameter of type 'string | Selector | NodeSnapshot | SelectorPromise | ((...args: any[]) => Node | Node[] | NodeList | HTMLCollection)'.
  Type 'Promise<Selector>' is missing the following properties from type 'SelectorPromise': childElementCount, childNodeCount, hasChildElements, hasChildNodes, and 51 more.ts(2345)

(...这只会让我的大脑痉挛)

我如何编写页面对象 pageSubtitle 以接受参数但在其他方面像 pageTitle 对象一样运行?

最佳答案

您正在等待 Selector promise 两次 - 这会导致错误。 尝试按如下方式修改您的测试和页面模型:

页面模型:

export class AreaPage {
    public pageTitle = Selector("#container h1").withText("My Area Title");

    public pageSubtitle(areaName: string) {
        return Selector("#container h2").withText(areaName);
    }
}

测试:

test("test some code", async (t) => {
    await t
        .click(areaPage.pageTitle)
        .click(pageModel.pageSubtitle("my subtitle"));
}

关于testing - 在页面模型中将参数传递给 TestCafe Selector,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57202155/

相关文章:

php - 使用 PHPUnit 断言正确顺序的 Laravel 测试

postgresql - 如果在 Postgres 中存在,则删除 USER(具有特权)

php - Jquery从脚本标签传递参数

ruby-on-rails - 在不重新加载的情况下将大型数据集留在测试数据库中

ios - 同时在 iPhone 上安装 iOS 应用程序的生产和开发版本

c# - 安全地对IoC/DI配置进行广泛的更改

c# - 编码 ui 测试失败后的操作

TeamCity 中的 WCF 集成测试

jsf - 如何在另一个托管 bean 中访问一个托管 bean 的属性

c# - 发送语音识别 args.Result 作为 UWP desktop-bridge 包中的参数