我正在使用Angular Material将Cypress添加到我的Angular 6项目中。材质对话框(包含iFrame)欢迎新用户,并通过在对话框外部单击来关闭对话框。
我试图以多种方式在赛普拉斯中关闭此对话框,并引入了等待和超时,以确保它与网络加载问题无关:
cy.get('dialog-element', { timeout: 10000})
.wait(3000).click(-50, -50);
Run Code Online (Sandbox Code Playgroud)
失败是因为它被cdk-overlay-container覆盖。使用click(...,{force:true})没有帮助。试过了
cy.get('.cdk-overlay-container', { timeout: 10000})
.wait(3000).click(-50, -50, { force: true });
Run Code Online (Sandbox Code Playgroud)
这也没有帮助。对话框不会关闭,连续单击不会起作用,即,尝试进行例如以下操作时,它始终会失败
cy.get('[data-cy=element-on-page-beneath-dialog]').click();
Run Code Online (Sandbox Code Playgroud)
进行调试时,我可以在对话框外部看到点击的红点,因此鼠标的位置不是问题。
编辑:根据要求,材质对话框HTML(注意宽度和高度足够小,因此对话框不会填满页面,但周围留有足够的空间,并且src具有真实的Youtube视频链接)
<div style="overflow: hidden;">
<iframe style="margin-top: 2px; overflow: hidden;" [width]="videoWidth" [height]="videoHeight" src="..." frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>
<div>
Run Code Online (Sandbox Code Playgroud)
Ric*_*sen 13
它可能只是选择器。以下测试似乎工作正常,使用选择器 of.cdk-overlay-backdrop
而不是.cdk-overlay-container
。
describe('closing-an-angular-material-dialog-in-cypress', () => {
it('closes the dialog', () => {
cy.visit('https://material.angular.io/components/dialog/overview')
cy.contains('button', 'Pick one').click()
cy.get('.cdk-overlay-backdrop').click(-50, -50, { force: true });
})
})
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
867 次 |
最近记录: |