我已经编写了一个自定义命令,用于根据我提供的联系人姓名选择复选框(请参阅图片)例如,我提供test10 test10,它没有被选中,但是测试用例没有被选中就通过了,我尝试调试cname变量为空并附加调试器屏幕截图
Cypress.Commands.add("SelecttheContact", (contactName) => {
cy.get('tr td:nth-child(2)').each(($el, index, $list) => {
const cname=$el.find(contactName).text()
if(cname.includes(contactName))
{
// cy.get("tr td:nth-child(1)").eq(index).click()
// cy.get("input[type='checkbox']").eq(index).click()
debugger
$e1.find('checkbox').click()
}
}) })
2条答案
按热度按时间zlhcx6iw1#
.find()
根据docu接受选择器:https://api.jquery.com/find/ 所以传递文本内容是行不通的。text()
返回空字符串,因为如果在jquery中找不到选择器,则始终会得到一个对象。调用到该对象的函数将返回默认值。为什么测试通过不能从我们所看到的来确定:-)
我建议您调整复选框的选择器。
顺便说一句,我不确定你是否能打电话来
cy.get()
内each()
(代码中注解掉的行)。目前我不在我的笔记本电脑,所以我不能提供一个点击复选框的例子。但请尝试修复选择器,如果它不工作,我可以自己尝试。
inb24sb22#
我在这里可能错了,但看起来您是在依赖jquery而不是cypress来完成选择工作。我会使用cypress选择来查找复选框。
你知道柏树运动场吗?
选择器是一种交互式功能,可帮助您:
确定元素的唯一选择器。
查看与给定选择器匹配的元素。
查看与文本字符串匹配的元素。
https://docs.cypress.io/guides/core-concepts/test-runner.html#selector-操场
还有一个api选项可以更改选择器的优先级
选择器将公开API,使您能够:
更改默认选择器策略
重写每个元素返回的选择器
https://docs.cypress.io/api/cypress-api/selector-playground-api.html#syntax