Tes*_*ter 5 javascript cypress
使用 cypressIO 断言元素按字母顺序排序时的最佳实践是什么?我想基本上检查element[0].text()之前是否正确排序,element[1].text()但对于以下代码段中的所有元素:
cy.get('#main div').each((account) => {
});
});
Run Code Online (Sandbox Code Playgroud)
布伦丹的回答中有一些问题
$elements.map()它的回调中有两个参数。第一个是jQuery对象中元素的索引,而不是元素
第二个参数是 DOM 元素,所以.text()不起作用,innertText需要
strings不能像数组一样测试结果,因为它是另一个jQuery对象,需要在断言之前将其转换为数组
将cy.wrap(strings).should("equal", strings.sort())jQuery 包装器对象与其自身进行比较,给出误报结果
这是应该发布的测试版本
cy.get('main#1 div')
.should($elements => {
const strings = $elements.map((index, el) => el.innerText).get()
return strings
})
.should('deep.eq', ['a', 'b', 'c'])
Run Code Online (Sandbox Code Playgroud)
测试 HTML:
<main id="1">
<div>a</div>
<div>b</div>
<div>c</div>
</main>
<main id="2">
<div>c</div>
<div>b</div>
<div>a</div>
</main>
<main id="3">
<div>b</div>
<div>c</div>
<div>a</div>
</main>
Run Code Online (Sandbox Code Playgroud)
回调
类型:Function( 整数索引, Element domElement ) => Object
我认为这个或类似的东西会对你有用(还没有尝试过)。它获取与您提供的选择器匹配的所有元素的文本并将其存储在数组中,然后断言该数组在排序之前和之后匹配。
cy.get('#main div').then($elements => {
var strings = $elements.map($el => $el.text());
cy.wrap(strings).should("equal", strings.sort()); // you may need deep equal here instead
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4151 次 |
| 最近记录: |