mocha 控制台日志显示对象承诺

时间:2021-01-02 17:41:06

标签: selenium mocha.js

开始掌握摩卡咖啡,但有一件事我不明白,在下面的代码中

describe('03 Test recent recipe test', () => {
    it('Test search async', async () => {
        await driver.wait(until.elementLocated(By.name('selectit')));
        var recipeName = driver.findElement(By.name('selectit')).getText(); 
        driver.findElement(By.name('selectit')).click();
        await driver.wait(until.elementLocated(By.id('name')));
        var recipeLabel = driver.findElement(By.id('name')).getText(); 
        await console.log(recipeName + " - " + recipeLabel);
        expect(recipeName).to.contain(recipeLabel);
    });
  });  

此测试作为通过返回,但 console.log 输出 - [object Promise] - [object Promise] 这是为什么,期望测试很高兴他们匹配

1 个答案:

答案 0 :(得分:1)

那是因为您误用了 await 语句中的 console.log()

当你得到 awaitrecipeName 时你应该 recipeLabel 因为 getText() 返回一个 Promise

由于 console.log() 不返回 Promise,因此您无需await

作为旁注,通过对 await 语句进行 console.log()ing,它不会解析其中的 promise。

您的代码应如下所示:

describe('03 Test recent recipe test', () => {
    it('Test search async', async () => {
        await driver.wait(until.elementLocated(By.name('selectit')));
        var recipeName = await driver.findElement(By.name('selectit')).getText(); 
        await driver.findElement(By.name('selectit')).click();
        await driver.wait(until.elementLocated(By.id('name')));
        var recipeLabel = await driver.findElement(By.id('name')).getText(); 
        console.log(recipeName + " - " + recipeLabel);
        expect(recipeName).to.contain(recipeLabel);
    });
  }); 

要使用您拥有的变量并使用 console.log() 打印,您可以在其中 await 每个变量:

    var recipeName = driver.findElement(By.name('selectit')).getText(); 
    ....
    var recipeLabel = driver.findElement(By.id('name')).getText(); 
    console.log(await recipeName + " - " + await recipeLabel);