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