我需要检查一个div,看看它是否包含一个'a'(链接)。我一直在这里寻找类似的问题,但似乎没有一个完全符合我的想法。
示例标记:
<div if='description>
blablablabla
blablablabla
blablablabla
</div>
<div id='description'>
blablablabla
<a href="thelink">The link</a>
blablablabla
</div>
<div id='description>
blablablabla
blablablabla
blablablabla
</div>
id是重复的,对此我无能为力。然而,在这些情况下使用.eq()似乎工作得很好。
我需要做的是检查,例如,cy.get('#description').eq(0),看看其中是否有"a",如果有,点击它。如果没有'a',则不执行任何操作。
我试过这样做,但没有成功:
if (cy.get('#description').eq(0).contains('a')) {
cy.get('#description').eq(0).within( () => {
cy.get('a').click();
});
可能是不正确的代码,关于within的使用。
这:
if (cy.get('#description').eq(0).children().contains('a')) {
cy.get('#description').eq(0).within( () => {
cy.get('a').click();
});
所有的帮助和/或提示,一如既往,感谢。(天哪,我有时会想念Selenium,在那里我可以几乎完全自由地使用Java或Kotlin代码。)
您可以像@lbsn提到的那样使用子节点,然后添加click()
。
cy.get('#description').eq(0).children('a').click()
您也可以查看这一点,例如当您获得a
然后单击它并退出each()
时,如果没有子元素,则测试继续并且不会失败。
cy.get('div#description').each(($ele) => {
if ($ele.children('a').length > 0) {
cy.wrap($ele).children('a').click()
return false //Remove if you want to continue the loop even after finding the child element
}
})