日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

SAP 电商云 Spartacus UI set delivery mode HTTP put 请求的触发时机

發布時間:2023/12/19 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SAP 电商云 Spartacus UI set delivery mode HTTP put 请求的触发时机 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

看下面這段代碼:

context('Group Skipping - Checkout', () => {before(() => {cy.requireLoggedIn().then(() => {checkout.goToProductDetailsPage();checkout.addProductToCart();checkout.fillAddressForm();cy.get('input[type=radio][formcontrolname=deliveryModeId]:not(:disabled)').first().focus().click();checkoutNextStep('/checkout/payment-details');checkout.fillPaymentForm();cy.get('.cx-review-summary-card');cy.saveLocalStorage();});});

第39行會觸發一個 HTTP Put 請求,其觸發時機在這篇文章里可以看到。

下列文字描述了一種竟態情況:

  • line 39 的代碼觸發了 HTTP put 請求,修改 delivery mode

  • line 40 行的代碼拿到了 radio input 控件實例。 執行完了 first 和 focus 方法。

  • 此時 HTTP Put 請求使得 Spinner 控件替代了 radio input 按鈕,所以后者 detached from DOM.

  • 在一個 detached from DOM 狀態的元素下執行 click 方法,就會出現本文描述的錯誤。

  • 解決方案

    等 HTTP put 操作成功執行之后,再執行下面代碼即可:

    cy.get('input[type=radio][formcontrolname=deliveryModeId]').first().focus().click();

    完整的解決方案:

    cy.intercept({method: 'PUT',path: `${Cypress.env('OCC_PREFIX')}/${Cypress.env('BASE_SITE')}/${Cypress.env('OCC_PREFIX_USER_ENDPOINT')}/current/carts/*/deliverymode?deliveryModeId=*`,}).as('setDeliveryMode');checkout.fillAddressForm();cy.wait('@setDeliveryMode');cy.get('input[type=radio][formcontrolname=deliveryModeId]').first().focus().click();checkoutNextStep('/checkout/payment-details');checkout.fillPaymentForm();cy.get('.cx-review-summary-card');cy.saveLocalStorage();```

    思路就是首先用 cy.intercept 監控 path 參數指定的 HTTP put 請求的 endpoint,使用 as 存儲成一個別名,然后調用 cy.wait, 傳入別名,等待其執行完畢,再執行接下來的 cy.get().click() 即可。

    總結

    以上是生活随笔為你收集整理的SAP 电商云 Spartacus UI set delivery mode HTTP put 请求的触发时机的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。