javascript - 如何使用 Cypress 获取 javacript 弹出窗口中的内容?
问题描述
我在我的网站上使用 sweetalert2 来创建弹出窗口。sweetalert2 库在触发触发器(例如单击按钮)时使用 JavaScript 将 DOM 节点添加到页面。添加的所有内容的父节点都是一个 div 标签:
<div class="swal2-container">
...
</div>
在我的赛普拉斯测试中,我加载页面并单击触发弹出窗口的按钮。但是,赛普拉斯找不到添加的 DOM 节点(及其子节点):
it('Get content of popup', () => {
cy.get("[id='popup_trigger_button']").click()
cy.get("[class='swal2-container']", {timeout: 10000})
})
测试在最后一行失败,因为赛普拉斯在页面上找不到(添加的)具有“swal2-container”类的节点。我怎样才能让赛普拉斯找到它?
解决方案
该类swal2-container
不是您寻找的元素上的唯一类,因此完全匹配不起作用。
向属性匹配添加通配符
it('Get content of popup', () => {
cy.get('[id="popup_trigger_button"]').click()
cy.get('class*="swal2-container"]')
})
或使用更传统的(部分)点选择器
it('Get content of popup', () => {
cy.get('[id="popup_trigger_button"]').click()
cy.get('.swal2-container')
})
此测试针对 SweetAlert2 演示页面运行
it('works with partial attribute selector', () => {
cy.visit('https://sweetalert2.github.io/')
cy.contains('button', 'Show success message').click()
cy.get("[class*='swal2-container']") // passes
})
和这个
it('works with class selector', () => {
cy.visit('https://sweetalert2.github.io/')
cy.contains('button', 'Show success message').click()
cy.get('.swal2-container') // passes
})
但他的失败是因为班级指定不正确
it('works with partial attribute selector', () => {
cy.visit('https://sweetalert2.github.io/')
cy.contains('button', 'Show success message').click()
cy.get("[class='swal2-container']") // fails
})
推荐阅读
- sql - 将 Tableau 计算字段转换为 SQL 脚本
- arrays - zsh - 仅打印重复的数组
- c++ - 这些 nullptr 在哪里?
- .net-core - CSV Helper 导出 csv 和编码
- python - 使用 Python 将图像上传到 Instagram
- swift - 有没有更简洁的方法来使用变量选择元组的一部分?
- firebase - 尽管 Internet 速度非常快,但仍接收到 Firebase Firestore 的不健康 Internet 连接
- c# - 从 azure 查询 azure 应用程序网关设置或整个 ARM 模板
- html - 如何使我的 div 嵌入对象居中?(目前左对齐)
- python - 在 python 中是否有一种获取 XML 内部子集的好方法?