我希望能够单击一个复选框并测试赛普拉斯中DOM中的元素不再存在。有人可以建议你怎么做吗?
//This is the Test when the check box is clicked and the element is there
cy.get('[type="checkbox"]').click();
cy.get('.check-box-sub-text').contains('Some text in this div.')
我想做与上述测试相反的事情。所以当我再次点击它时,带有类的div不应该在DOM中。
答案 0 :(得分:57)
这似乎有用,所以它告诉我还有更多要了解的内容.should()
cy.get('.check-box-sub-text').should('not.exist');
答案 1 :(得分:9)
根据https://docs.cypress.io/guides/references/assertions.html#Existence
// retry until loading spinner no longer exists
cy.get('#loading').should('not.exist')
这适用于被删除的情况。但是如果您希望它永远不存在... docs.cypress.io/guides/references/assertions.html#Existence它会重试直到消失。这实际上不适用于大多数人想要的标题问题。
但是,如果您要测试在我们的案例中该问题永远不存在。
// Goes through all the like elements, and says this object doesn't exist ever
cy.get(`img[src]`)
.then(($imageSection) => {
$imageSection.map((x, i) => {
expect($imageSection[x].getAttribute('src')).to.not.equal(`${Cypress.config().baseUrl}/assets/images/imageName.jpg`);
});
})
答案 2 :(得分:7)
使用.should('not.exist')
断言DOM中不存在元素。
不不要使用not.visible
断言。它会错误地通过<6.0,但现在会正常失败:
// for element that was removed from the DOM
// assertions below pass in < 6.0, but properly fail in 6.0+
.should('not.be.visible')
.should('not.contain', 'Text')
迁移文档:https://docs.cypress.io/guides/references/migration-guide.html#Migrating-to-Cypress-6-0
答案 3 :(得分:5)
您还可以搜索一个不应该存在的文本:
cy.contains('test_invite_member@gmail.com').should('not.exist')
在赛普拉斯中,您得到的结果是:0 matched elements
答案 4 :(得分:4)
您也可以同时使用 get
和 contains
来区分 HTML 元素。
<button type='button'>Text 1</button>
<button type='button'>Text 2</button>
假设您有 2 个带有不同文本的按钮,并且您想检查第一个按钮是否不存在,然后您可以使用;
cy.get('button').contains('Text 1').should('not.exist')
答案 5 :(得分:1)
cy.get(data-e2e="create-entity-field-relation-contact-name").should('not.exist')
可能会导致某些错误的结果,因为某些错误消息会被隐藏。最好使用
.should('not.visible')
在这种情况下。
答案 6 :(得分:0)
这对我有用:
cy.get('[data-cy=parent]').should('not.have.descendants', 'img')
我检查某些<div data-cy="parent">
内没有图像。
关于原始问题,您可以在内部节点上设置data-cy="something, i.e. child"
属性,并使用以下断言:
cy.get('[data-cy=parent]').should('not.have.descendants', '[data-cy=child]')
答案 7 :(得分:0)
您还可以使用以下代码
expect(opportunitynametext.include("Addon")).to.be.false
或
should('be.not.be.visible')
或
should('have.attr','minlength','2')
答案 8 :(得分:0)
我关闭了一个元素并检查了 should('not.exist') 但是断言失败了,因为它存在于 DOM 中。只是它不再可见了。
在这种情况下,should('not.visible') 对我有用。我刚刚开始使用柏树。很多东西要学。
答案 9 :(得分:0)
也可以在 cypress 中使用 jQuery 模式来完成:
data_chunks <- list()
i <- 1
rows_to_skip <- 0
rows_to_read <- 100000
bad_rows <- 0
file_name <- "my.csv"
while (TRUE) {
out <- tryCatch(
list(
data = data.table::fread(file_name, nrows = rows_to_read, skip = rows_to_skip, header = FALSE),
bad_row = FALSE
),
error = function(e) {
e
},
warning = function(w) {
warn_msg <- conditionMessage(w)
warn_matches <- regexec("line (\\d+)", warn_msg)
rows_to_read <- as.numeric(regmatches(warn_msg, warn_matches)[[1]][2]) - 1
if (!is.na(rows_to_read)) {
list(
data = data.table::fread(file_name, nrows = rows_to_read, skip = rows_to_skip, header = FALSE),
bad_row = TRUE
)
} else {
NULL
}
})
if ("error" %in% class(out) || is.null(out)) {
break
} else {
data_chunks[[i]] <- out[["data"]]
}
bad_rows <- bad_rows + out[["bad_row"]]
rows_to_skip <- sum(sapply(data_chunks, nrow)) + bad_rows
i <- i + 1
}
mydata <- data.table::rbindlist(data_chunks, use.names = FALSE)