Cypress:带有多个参数的 cy.task()

问题描述

我正在尝试:cy.task() 命令中传递多个参数并打印在 plugins/index.js 文件中提到的函数中声明的那些参数值

问题:函数print只打印第一个参数值,第二个参数未定义

代码

//test file with cy.task() command

class LoginPage {
    let site = abc
    let userDetails = xyz
    openPage(env,site,userDetails) {
        cy.task('loadUserAccountDetails',userDetails)
    }
}

module.exports = LoginPage

// plugins/index.js file where the event is registered with declared function

const validUserDetails = (site,userDetails) => {
  console.log('--->' + site) // This prints abc
  console.log('--->' + userDetails) // This prints undefined
}

module.exports = (on,config) => {
  // `on` is used to hook into varIoUs events Cypress emits
  // `config` is the resolved Cypress config

  on('task',{
    loadUserAccountDetails: validUserDetails
  })
}

请帮忙。

解决方法

这是通过在 index.js 文件中注册的任务传递参数来实现的。

on('task',{
    loadUserAccountDetails(site,userDetails): validUserDetails(site,userDetails)
})
,

看起来只处理了一个参数。但是你总是可以传入一个对象,并将变量作为属性。

 on("task",{
    async "rename"({var1,var2,var2}) {

 }

并在 .spec 中将其称为

cy.task('rename',{var1: 'val1',var2:'val2',var3: 'val3'},()=>{
            console.log('renamed');
       })

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...