开始掌握摩卡咖啡,但有一件事我不明白,在下面的代码中
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] 这是为什么,期望测试很高兴他们匹配
答案 0 :(得分:1)
那是因为您误用了 await
语句中的 console.log()
。
当你得到 await
和 recipeName
时你应该 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);