亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

從 Cypress 頁面對象返回布爾值

從 Cypress 頁面對象返回布爾值

搖曳的薔薇 2023-08-05 11:51:12
我想了解如何從 cypress 頁面對象返回布爾值?使用案例:我正在嘗試檢查頁面上是否存在某個元素。如果是,則返回一個布爾值。代碼:class DataTable {  constructor() {     return this;  }  has(fieldName) {    // HOW DO I RETURN A BOOLEAN HERE?    return cy.get('.view-and-field-name').contains(fieldName)  }}Mainpage.spec.jsconst dataTable = new DataTable();expect(dataTable.has(field.fieldName)).to.be.true;我希望能對我做錯的事情有一些見解。謝謝你的時間。
查看完整描述

3 回答

?
楊__羊羊

TA貢獻1943條經驗 獲得超7個贊

on expect()Mainpage 已經在內部執行過了cy.get('.view-and-field-name').contains(fieldName),所以是多余的。


如果dataTable.has(field.fieldName)失敗,測試將停止 - 它永遠不會傳遞錯誤值。


如果你想has(fieldName)傳遞一個布爾值,你需要切換到jquery里面,例如


has(fieldName) {

  const jquerySelector = `.view-and-field-name:contains(${fieldName})`;

  return Cypress.$(jquerySelector);

}

但使用 Cypress 命令和使用要簡單得多


const dataTable = new DataTable();

dataTable.has(field.fieldName);

就我個人而言,我會放棄頁面對象,而直接在測試中使用該命令。


查看完整回答
反對 回復 2023-08-05
?
寶慕林4294392

TA貢獻2021條經驗 獲得超8個贊

我建議下一個自定義命令:

Cypress.Commands.add("validateIfElementExistsInDom", (selector) => {

? ? cy.get('body')

? ? ? ? .then($body => {

? ? ? ? ? ? expect($body.find(selector).length > 0).to.be.true

? ? ? ? })

? ??

})

您可以在測試中使用它,例如:


cy.validateIfElementExistsInDom(fieldName)

? ??

以及一般返回布爾函數示例:


Cypress.Commands.add("validateIfElementExistsInDomAsBoolean", (selector) => {

? ?return cy.get('body')

? ? ? ? .then($body => {

? ? ? ? ? ? return cy.wrap($body.find(selector).length > 0) //Cy wrap is needed so the function is chainable

? ? ? ? })

})


//in test code

cy.validateIfElementExistsInDomAsBoolean(fieldName)

? ? .then(boolean => expect(boolean).to.be.true)


查看完整回答
反對 回復 2023-08-05
?
FFIVE

TA貢獻1797條經驗 獲得超6個贊

cy.get由于可重試策略,它不是同步函數,因此無法Boolean直接返回。

如有必要,您可以將should的變體與回調一起使用。

對于您的情況,更簡單的變體exist是合適的(或者be.visible,可能更適合您的情況):

class DataTable {

? has(fieldName) {

? ? return cy.get('.view-and-field-name').contains(fieldName);

? }

}


const dataTable = new DataTable();

dataTable.getField(field.fieldName).should('exist');


查看完整回答
反對 回復 2023-08-05
  • 3 回答
  • 0 關注
  • 166 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號