我想获取具有属性名称“ tag-test”且值为“ tab”的子元素
我要测试的html部分如下所示
...
<ul
tag-test="tab"
>
<li />
<li />
<li />
/>
现在我可以从li
中获得最后一个ul
作为jquery对象吗?
我控制台记录的以下代码显示
cy.get('ul[tag-test]=tab')
.then((ul) => {
console.log(ul) // <ul> ... </ul> .
})
答案 0 :(得分:3)
要在li
中查找最后一个ul
,可以使用CSS伪选择器last-child
。
例如,使用此测试片段
<ul tag-test="tab">
<li>1</li>
<li>2</li>
<li>3</li> // test should find this one
</ul>
<ul tag-test="another">
<li>4</li>
<li>5</li>
<li>6</li> // test should ignore this one
</ul>
测试可能是
cy.get('ul[tag-test=tab]')
.find('li:last-child') // use find here to restrict search to previous subject
.contains('3')
或获取jQuery对象
cy.get('ul[tag-test=tab]')
.find('li:last-child')
.then($lastLI => {
expect($lastLI).to.contain(3)
})
答案 1 :(得分:1)
从您的代码中,我可以看到用于标签测试的定位器不正确,它应如下所示:
cy.get('ul [tag-test="tab"]')
使用此定位器,您将获得具有属性ul
的所有tag-test="tab"
元素
答案 2 :(得分:0)
您可以使用 .find 解决我们的问题
就您而言,
cy.get('ul[tag-test="tab"]')
.find('li')
.then($li => {
//$li will contain all the li elements inside your ul as an array
cy.log($li)
//if you want a specific li item use $li[index]
cy.log($li[0])
//if you want the last li item use the length of the returned li array
cy.log($li[$li.lenght -1])
})