Cypress中如何选中含“abc Account”的li并点击其tree-checkbox?
解决Cypress中定位指定li下复选框的问题
问题原因
你当前代码的问题出在.get('.tree-checkbox')上——Cypress的.get()方法会从整个文档重新开始查询,而非在之前定位到的包含“abc Account”的li元素内部查找,因此会匹配到页面上所有的.tree-checkbox元素,导致“找到多个元素”的报错。
解决方案
需要在定位到目标li后,使用.find()方法限定查找上下文,或者直接用组合选择器一步到位:
方法1:修正原代码的上下文问题
cy.get('div[id*="list-widget"]') .find('li') .contains('abc Account') .closest('li') // 回到包含目标文本的li元素(contains默认匹配内部span) .find('.tree-checkbox') .click({force: true});
方法2:更简洁的组合选择器
直接通过选择器关联li和复选框,一步定位目标元素:
cy.get('#list-widget li:contains("abc Account") .tree-checkbox') .click({force: true});
方法3:通过title属性精准匹配
利用li内部span的title属性做更精准的定位:
cy.get('#list-widget li span[title="abc Account"]') .closest('li') .find('.tree-checkbox') .click({force: true});
内容的提问来源于stack exchange,提问作者ketan
相关产品推荐
相关产品推荐

