如何在 Testcafe 断言中的 1 个可能参数上添加 2 个常量?

Posted

技术标签:

【中文标题】如何在 Testcafe 断言中的 1 个可能参数上添加 2 个常量?【英文标题】:How can one add 2 constants on 1 possible parameters in a Testcafe assertion? 【发布时间】:2019-12-18 20:11:21 【问题描述】:

我正在使用 Testcafe 设置一个测试套件,该套件能够检查使用 XAF 框架制作的多个 Web 应用程序的界面。 问题是,同一位置上具有相同功能的某些按钮确实具有不同的名称(即“Sortierung aufheben”和“Sortierung entfernen”)。 现在我想给Testcafe这两个选项供选择,让它使用测试中需要的那个。

我正在使用 VSC 和 Chrome 在 Typescript 3.5 中编写测试来运行测试。 当我只在withText() 选择器上添加一个选项时,Testcafe 会巧妙地运行我的断言。如果我尝试在数组中添加两个(参见下面的代码),它会首先检查第一个 - 如果一个网站是错误的 - 并且会失败。

我的测试是这样工作的:

// Functions_Library.ts
FindListMultipleElements(propertyName, elementNames: string[]): Selector 
        var selector = "[class^='dxm-"+propertyName+"']";
        for (var i=0; i < elementNames.length; i++) 
            var element = Selector('body').find(selector).withText(elementNames[i]);
            if (element != null) 
                        return element;
                    
        
// all_tests.ts
listViews.forEach(listView => 

        test(`$moduleName - $listView.navbarItem - ColumnCheck Tests`, async t => 
            await t
        .click(lib.FindListMultipleElements('content', ['Sortierung aufheben','Sortierung entfernen']))
         );
);

我想让 Testcafe 跳过不合适的参数,或者只选择正确的参数。这有可能以某种方式实现吗?

【问题讨论】:

你控制html吗?如果按钮具有相同的功能,我会添加一个类 my-button-type 并找到它。这样一来,您就可以放心地应对未来的措辞变化。 遗憾的是没有,一位前辈正在使用 XAF-Framework 来生成它。 【参考方案1】:

据我了解,您需要先检查元素是否存在,然后再单击它。使用 TestCafe 是可能的。详情请参考answer。

因此,您可以创建一个 selectors 数组并遍历它们,直到找到选择器。如果找到成功,您可以继续使用它。

【讨论】:

以上是关于如何在 Testcafe 断言中的 1 个可能参数上添加 2 个常量?的主要内容,如果未能解决你的问题,请参考以下文章

执行 TestCafe 断言的正确方法是啥

在 testcafe 中断言空文本框

如果中间的测试失败,有没有办法中止 TestCafe 中的测试套件?

Promise.allSettled 中多个选择器的 TestCafe 断言似乎具有误导性

将多个参数传递给testcafe中的ClientFunction

在页面模型中将参数传递给 TestCafe 选择器