第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

如何使用 Cypress 測試客戶端重定向到第 3 方站點(diǎn)?

如何使用 Cypress 測試客戶端重定向到第 3 方站點(diǎn)?

MMTTMM 2023-09-21 16:30:38
Cypress 提供了一種使用request測試服務(wù)器端重定向的簡單方法:cy.request({  url: `/dashboard/`,  followRedirect: false, // turn off following redirects}).then((resp) => {  expect(resp.redirectedToUrl).to.eq('http://example.com/session/new')})但是,這不適用于客戶端重定向,因?yàn)轫撁嬖谥囟ㄏ虬l(fā)生之前已成功加載,這意味著響應(yīng)是針對頁面的,而不是針對重定向的。如何測試客戶端重定向?我需要一種捕獲重定向并驗(yàn)證的方法:發(fā)生了是正確的 URL。筆記:我不想跟隨重定向離開正在測試的應(yīng)用程序。我沒有測試整個(gè)身份驗(yàn)證流程。我只需要知道有一個(gè)重定向。我無法更改此身份驗(yàn)證流程。重定向是不可避免的。重定向發(fā)生在初始化期間,而不是任何用戶交互的結(jié)果。重定向使用:window.location.href = url請參閱下面我的回答以嘗試解決此問題。
查看完整描述

3 回答

?
慕尼黑的夜晚無繁華

TA貢獻(xiàn)1864條經(jīng)驗(yàn) 獲得超6個(gè)贊

更新:這并不可靠。我剛剛做了一些重構(gòu),看來這個(gè)解決方案也有缺陷。重定向可能發(fā)生在 cypress 訪問頁面和觸發(fā) 之間,cy.wait因此測試最終會(huì)等待已經(jīng)發(fā)生的事情。下面的內(nèi)容可能仍然適合您,具體取決于您的重定向何時(shí)被觸發(fā),但如果它是在初始化時(shí)觸發(fā)的,則這似乎不起作用。


不太喜歡這個(gè)解決方案,因?yàn)橹囟ㄏ蛉匀话l(fā)生(我還沒有找到取消它的方法),但它至少測試了重定向是否發(fā)生,并允許我檢查查詢:


cy.intercept({ pathname: `/sessions/new` }).as(`loginRedirect`)


cy.visit(`/dashboard/`)


cy.location().then(($location) => {

  cy.wait(`@loginRedirect`).then(($interceptor) => {

    const { query } = urlParse($interceptor.request.url)

    expect(query).to.equal(`?token=true&redirect=${$location.href}`)

  })

})

注意:在 v6 中route2更改為。intercept


查看完整回答
反對 回復(fù) 2023-09-21
?
慕妹3146593

TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超9個(gè)贊

Gleb Bahmutov 在Deal with window.location.replace中有一種方法,它window.location在源中重命名為window.__location有效的存根。

它用于在加載頁面到達(dá)瀏覽器之前cy.intercept()修改加載頁面,即在實(shí)例化并成為完全不可變/不可損壞的對象之前。window.location

it('replaces', () => {


? cy.on('window:before:load', (win) => {

? ? win.__location = {? ? ? ? ? ? ? ? ? ? ? ? ? ?// set up the stub

? ? ? replace: cy.stub().as('replace')

? ? }

? })


? cy.intercept('GET', 'index.html', (req) => {? ?// catch the page as it loads

? ? req.continue(res => {

? ? ? res.body = res.body.replaceAll(

? ? ? ? 'window.location.replace', 'window.__location.replace')

? ? })

? }).as('index')


? cy.visit('index.html')

? cy.wait('@index')


? cy.contains('h1', 'First page')

? cy.get('@replace').should('have.been.calledOnceWith', 'https://www.cypress.io')

})

這個(gè)存根replace,但同樣應(yīng)該適用于設(shè)置href器。


查看完整回答
反對 回復(fù) 2023-09-21
?
搖曳的薔薇

TA貢獻(xiàn)1793條經(jīng)驗(yàn) 獲得超6個(gè)贊

這是我發(fā)現(xiàn)的唯一方法是檢測成功的重定向客戶端(如果是第三方網(wǎng)站)。JavaScript 有一個(gè)方便實(shí)用的函數(shù),稱為window.open(). 您可以用它做很多事情,包括重定向網(wǎng)頁。_self這可以通過將目標(biāo)設(shè)置為或 來完成_top。通過使用 while 循環(huán),您可以盡快運(yùn)行代碼。這是我如何記錄客戶端重定向的草稿。


var redirectURL = 'https://www.example.com/',

redirectWindow = window.open(redirectURL, '_top'),

redirected = false,

count = 0;


while(true) {

    if (redirectWindow.document.readyState === 'complete') {

        redirected = true;

        //Your code here. I am just logging that it is in the process of redirection.

        console.log('redirecting')

        break;

    }

    if (count > 2000) {

        redirected = false;

        break;

    }

    count++

    

}

if (redirected == false) {

    console.log('Error: Redirect Failed');

}


查看完整回答
反對 回復(fù) 2023-09-21
  • 3 回答
  • 0 關(guān)注
  • 221 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號