журнал консоли mocha показывает обещание объекта

#selenium #mocha.js

#selenium #mocha.js

Вопрос:

Начинаю разбираться в mocha, но одна вещь, которую я не понимаю, в приведенном ниже коде

 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);
    });
  });  
 

Этот тест возвращается как проход, но консоль.выходные данные журнала — [Обещание объекта] — [Обещание объекта]
Почему это, ожидаемый тест счастлив, что они совпадают

Ответ №1:

Это потому, что вы неправильно await console.log() использовали инструкцию on.

Вы должны await , когда получаете recipeName и recipeLabel потому getText() что возвращает a Promise .

Поскольку console.log() не возвращает a Promise , вам это не нужно await .

В качестве дополнительного примечания здесь, используя await это console.log() утверждение, оно не разрешит содержащиеся в нем обещания.

Ваш код должен выглядеть следующим образом:

 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);