簡體   English   中英

cy.wrap().its()... 當值 in.its() 包含句點時不起作用

[英]cy.wrap().its()... doesn't work when the value in .its() contains a period

我希望從我正在使用賽普拉斯測試的當前 URL 中提取一個 URL 參數。 我基本上可以從這篇 SO 帖子中得到答案,但是,當我使用賽普拉斯的.its() 命令時,我提取的值對我不可用。 url中的參數都有句點,我相信這是我出錯的原因。 這是我正在構建的自定義 Cypress 命令:

Cypress.Commands.add('getParmsCommand', function(value) {
cy.url().as('url')

cy.then( () => {
  cy.log(this.url)
  const kvPairArray = this.url.toString().split('?')[1].toString().split('&')
  const paramObj = {}
  kvPairArray.forEach(param => {
    cy.log(param)
    //default 'value' to 0 if it doesn't exist
    const [ key, value="0" ] = param.split('=')
    paramObj[key] = value
  })
  //forcefully adding a debug element to the key value store for testing
  paramObj['beverage'] = 'soda'

cy.wrap(paramObj)
  .its('timeline.ws')                                   //doesn't work
  // .its(`${Cypress.$.escapeSelector('timeline.ws')}`) doesn't work
  // .its('timeline\.ws')                               doesn't work
  // .its('"timeline.ws"')                              doesn't work
  // .its('beverage')                                   this DOES work!
  .then(parmVal => {
    cy.log(parmVal)
})

這是我試圖從中提取的 URL 的相關部分:

timeline.ws=3600000&timeline.to&timeline.fm&timeline.ar=false

從錯誤中可以看出,Cypress 只是在尋找 id timeline ,而不是timeline.ws 它完全忽略了這段時間之后的所有內容,因此永遠找不到我的參數。 賽普拉斯錯誤信息

我在 2018 年看到Cypress 的 .get() function 也有類似的錯誤

我是 javascript 和賽普拉斯的新手,所以我希望這只是我忽略的一件奇怪的簡單事情。 在這一點上,非常歡迎任何建議或有根據的猜測!

謝謝你。

.its()只是屬性提取的簡寫。 由於句點失敗,您可以在.then()中使用括號表示法。

cy.wrap(paramObj)
  .then(paramObj => paramObj['timeline.ws'])

要不就

cy.wrap(paramObj['timeline.ws'])

玩轉 URL構造函數

const urlString = 'http://example.com?timeline.ws=3600000&timeline.to&timeline.fm&timeline.ar=false'
const url = new URL(urlString)

cy.wrap(url.searchParams.get('timeline.ws'))
  .should('eq', '3600000')

cy.wrap(url.searchParams.get('timeline.to'))
  .should('be.empty')

cy.wrap(url.searchParams.get('timeline.ar'))
  .should('eq', 'false')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM