有谁知道如何拦截启动外部处理程序(例如电子邮件应用程序)的请求以获得
Request URL
?
启动外部应用程序的浏览器内请求如下所示:
Request URL: mailto:[email protected]?Subject=Test&Body=test
Referrer Policy: strict-origin-when-cross-origin
我正在尝试执行以下操作但它不起作用:
cy.intercept('mailto:**').as('mailto')
cy.get('#submitButton').click()
cy.wait('@mailto').its('request.url').should('contain.text', 'Subject')
它在
cy.wait('@mailto')
上失败,而 Cypress 界面中的 Routes
显示以下内容(它没有收到请求):
方法 | 路由匹配器 | 存根 | 别名 | # |
---|---|---|---|---|
* | 邮箱:** | 没有 | 邮寄到 | - |
此外,已经尝试使用不同的 Cypress 版本:
6.4.0
、6.9.1
和 8.2.0
.
希望有人能帮忙。提前致谢。
事实证明 mailto: 似乎不是请求,它更像是 HTML
<a>
中的链接...
一个请求通常有一个方法(GET、POST、DELETE)和一个URL,然后你可以使用cy.intercept
拦截。
事实证明,当您单击包含 Mailto 的链接时,不会创建请求,该链接用于打开您的电子邮件客户端,因此您需要以另一种方式为该链接创建断言。
cy.intercept('POST', '/createuser*').as('createUser')
cy.wait('@createUser')
这是我用来拦截请求的方式,让测试在继续之前等待响应,它是针对您的前端向您的后端服务器或第三方服务发出的请求。