【问题标题】:Get cypress database query output objects in to variables将赛普拉斯数据库查询输出对象放入变量中
【发布时间】:2020-10-26 05:39:04
【问题描述】:

我有一个使用 mysql 节点模块设置的 cypress 测试。当我运行下面提到的测试时,它的输出如下。

const executeQuery = (query) => {
    cy.task('DBQuery', query).then(function (recordset) {
        var rec = recordset
        cy.log(rec)
    })
}

查询:

select * 
from Users 
where email = 'sheeranlymited@lymitedtest.com'

输出:记录 [Object{23}]

查询:

select firstname 
from Users 
where email = 'sheeranlymited@lymitedtest.com'

输出:记录 [{firstname: Edward}]

我想要获得 23 列的输出,而不是 cy.log(rec),以根据列名分配给不同的变量。

如果有人可以帮我解决这个问题,我不胜感激......

【问题讨论】:

  • 我试过 "cy.log(rec['firstname'])" 但它也没有给出任何输出

标签: javascript mysql cypress browser-automation


【解决方案1】:

您可以在 js 中使用Object.values 从您的对象中检索值

假设您需要提取第 3 列的值,因此您的代码将如下所示,

cy.task('DBQuery', query).then(function (recordset) {
    var rec = recordset
    const results = Object.values(rec[0])
    // results[index of the column] will output the results
    cy.log(results[3])
})

我们可以做一些小改动,让您的任务更轻松,

cy.task('DBQuery', query).then(function (recordset) {
    var rec = recordset
    const Values = Object.values(rec[0]);
    const keys = Object.keys(rec[0]);
    let result = {};
    let index = 0;
    keys.forEach(key => {
        result[keys[index]] = Values[index];
        i++
    })
     //result.firstName will give you your results
     cy.log(result.firstName);
})

通过这种方式,我们生成了以键作为列名的键值对。所以你可以使用列名来查找值。

希望这会有所帮助。

干杯。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-11-17
    • 2022-12-07
    • 1970-01-01
    • 2022-07-22
    • 2017-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多