在我们的网站上,当有人点击某个链接或采取某些操作时,我们会触发Omniture调用。在网络标签的Chrome DevTools中,您可以看到要触发的网络请求。
Cypress.io是否有办法捕获传出的网络请求,因此我们可以检查/解析URL?相当于这将是类似于webdriver设置的Browsermob代理。我想使用Cypress.io告诉它点击链接,但是我想通过浏览器检查传出的网络请求。
答案 0 :(得分:3)
您应该能够使用cy.route
等待并对网络请求进行断言:
cy.route({
url:'*omniture.com*',
method: 'POST',
onRequest: (xhr) => {
expect(xhr.request.body).to.eql('somebody')
}
})
如果上述方法无效,可能是因为该模块使用fetch ,但尚未获得原生支持。但是,您可以通过将其添加到omniture
来cy.visit()
回退到XHR:
cy.visit('example.com', {
onBeforeLoad: (win) => {
win.fetch = null
}
})
...
omniture
全局您可以在网站上的全局对象上使用cy.spy()
至spy
,这是一个示例:
cy.visit('example.com')
cy.window().should('have.property', 'omnitureRequest').then(win=>{
cy.spy(win, 'omnitureRequest')
})
(should()
会在尝试窥探对象之前等待对象存在,因为omniture
<script>
标记可能会加载asynchronously
答案 1 :(得分:0)
我们找到了解决Omniture问题的方法。请求URL存储在附加到浏览器窗口对象的对象的Omniture属性中。使用cy.window()我们可以获取window对象并访问此属性并使用节点模块(querystring)来解析查询字符串。
我们在Cypress.io中找不到任何本地方式来检查网络请求。