如何使用 cypress 命令编写可重用的 javascript 函数

Sha*_*ari 5 javascript cypress

我是柏树和测试的新手。我需要从 cypress 中的元素获取可见文本并将其存储在变量中。使用 selenium,我们可以使用 getText() 方法轻松获取元素值。但在 cypress 中我们需要使用如下代码。

HTML 元素:

<div class='myClass'>this is text</div>
Run Code Online (Sandbox Code Playgroud)

JavaScript 可重用函数

function getText(byclassName)
    {
     let campaign;
        cy.get(byclassName)
        .invoke('text').then((text) => {
          campaign = text
          cy.log('campaign',  text)
          return text          
        })
    }
Run Code Online (Sandbox Code Playgroud)

然后我的柏树测试是这样的

 it('finds the role', () => {
   const elementText= getText('.myClass')//fails
    cy.log('campaign',  getText('.myClass'))
 }) // it fails 
Run Code Online (Sandbox Code Playgroud)

请告诉我我在这里缺少什么?我想编写一个通用函数,它返回 div 元素中的可见文本,并将其存储或记录在控制台中。

Car*_*ten 4

您正在返回 Promise 函数内的值。然而 Promise 不能返回值,它们只能用一个值来解析。这意味着您必须在整个代码中使用 Promise,如下所示:

function getText(byclassName) {
    return new Promise((resolve, reject) => {
        cy.get(byclassName).invoke('text')
            .then(campaign => {
                cy.log('campaign', campaign);
                resolve(campaign);
            });
    });
}

it('finds the role', function () {
    cy.visit(...);

    return getText('.myClass').then(elementText => {
        cy.log('campaign', elementText);

        expect(elementText).to.equal(...);
    });
})
Run Code Online (Sandbox Code Playgroud)