在我的testcafe测试中,我有一个匹配多个节点的选择器。我想在所有节点上执行断言,该节点由此选择器匹配。
这将仅对mySelector
await t.expect(mySelector.innerText).eql("foo");
这将在所有元素上执行它,但它真的很冗长:
const count= await mySelector.count;
for (let i = 0; i < count; ++i) {
await t.expect(mySelector.nth(i).innerText).eql("foo");
}
是否有内置的方法可以解决这个问题?
答案 0 :(得分:1)
TestCafe没有像expectEach
这样的方法,所以我认为你提出的方法是最好的。它添加了几行代码,但它清楚地说明了您要在测试中检查的内容。
答案 1 :(得分:1)
正如@Alexander Moskovkin所回答的那样,&#34; TestCafe没有像expectEach
...&#34;这样的方法。但是,我决定expectEach
in my testcafe-utils module。如下面的示例用法所示,我建议在@message断言参数中插入eachAsync
的@n param,以便在测试失败时知道哪个第n个元素导致失败。
const { Selector } = require('testcafe');
const tu = require('testcafe-utils');
const baseURL = 'http://www.imdb.com/title/tt0092400/ratings?ref_=tt_ov_rt';
fixture `IMDB`
.page `${baseURL}`;
const mySelector = Selector('#main .title-ratings-sub-page table:nth-of-type(2) tr');
test('it', async t => {
await tu.expectEach(mySelector, n => t.expect(mySelector.nth(n).innerText).match(/all/gi, `Failed on n '${n}'.`));
})
&#13;