如何在 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 中的测试套件?
Promise.allSettled 中多个选择器的 TestCafe 断言似乎具有误导性