我正在尝试使用带有nodejs的selenium创建银行登录自动化,并且陷入Promise {pending}。
const {Builder, By, Key, until} = require('selenium-webdriver');
async function main() {
let driver = await new Builder()
.forBrowser('chrome')
.build();
await driver.get('login-url')
const name = await driver.findElement(By.name('AuthenticationFG.USER_PRINCIPAL'))
const pass = await driver.findElement(By.name('AuthenticationFG.ACCESS_CODE'))
await name.sendKeys(username)
await pass.sendKeys(password)
await driver.findElement(By.id("VALIDATE_CREDENTIALS1")).click()
await driver.wait(until.elementIsVisible(driver.findElement(By.id('LoginName'))), 1000)
await console.log(driver.findElement(By.id('LoginName'))) <-- getting issue here
}
main()
我试图在登录页面后打印用户名,但它继续给予Promise {pending}。
任何帮助都将不胜感激。
答案 0 :(得分:1)
AbhinavD指出使用:
main().then((result) => {
// do stuff here
})
您的主要功能是async
,它会返回一个承诺。 promise是一种可以解析,拒绝或挂起的数据结构。当承诺得到解决后,您可以在其上调用.then()
回调。这是一个应该说明这一点的例子:
async function test () {
let randomvalue = 5;
return randomvalue;
}
let returnValue = test()
// this logs the promise object
console.log(returnValue);
// this logs the actual value returned in the async function
returnValue.then((value) => {
console.log(value)
});
&#13;
async
函数实质上解析了带有返回值的promise。
对于想要经常使用JS的人来说,承诺本身是必须学习的主题。所以here是一个更详细的来源:
答案 1 :(得分:0)
main
函数是异步的。你需要等待它完成。
main().then((result) => {
// do stuff here
})
答案 2 :(得分:0)
您需要致电getText()
以阅读元素上显示的文字。
let loginName = await driver.findElement(By.id('LoginName')).getText();
console.log(loginName);
await main()