我尝试编写一些代码来检查下拉菜单中选项的字母顺序。
所以我所做的就是循环下拉菜单并将选项的值添加到数组中。然后我想检查数组的值是否按字母顺序排列。到目前为止我有这个代码:
var optionsArray = []
cy.get('#filter1 option').each(($el, index) => {
optionsArray[index] = $el.text()
})
expect(optionsArray).to.equal(optionsArray.sort())
HTML:
<select id="filter1" class="form-control abc">
<option value="" selected="selected">text1</option>
<option value="text2">text2</option>
<option value="text3">text3</option><!----></select>
问题是它在不应该通过的时候通过了测试。控制台中出现以下内容:预期 [] 等于 []并且expect()命令似乎在任何其他应该运行的命令之前运行。
如何按字母顺序对数组中的值进行排序并比较选项是否相等?
编辑:
这是有效的新代码:
var optionsArray = []
var optionsArraySorted = []
cy.get('#filter1 option').each(($el, index) => {
optionsArray.push($el.text())
optionsArraySorted.push($el.text())
})
.then(() => {
expect(optionsArray).to.deep.equal(optionsArraySorted.sort())
})
由于 Cypress 命令的异步特性,您必须添加.then()
after .each()
为了让它发挥作用。
Try this
var optionsArray = []
cy.get('#filter1 option').each(($el, index) => {
optionsArray[index] = $el.text()
})
.then(() => {
expect(optionsArray).to.deep.equal(optionsArray.sort()) // note deep for arrays
})
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)