Node.js 通过Nodejs获得硒的待定承诺
我正在尝试使用selenium和nodejs创建银行登录自动化,但我仍然坚持承诺{pending}Node.js 通过Nodejs获得硒的待定承诺,node.js,selenium,selenium-webdriver,Node.js,Selenium,Selenium Webdriver,我正在尝试使用selenium和nodejs创建银行登录自动化,但我仍然坚持承诺{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
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()
const{Builder,By,Key,until}=require('selenium-webdriver');
异步函数main(){
让驱动程序=等待新的生成器()
.forBrowser('chrome')
.build();
等待驱动程序。获取('login-url')
const name=wait driver.findElement(By.name('AuthenticationFG.USER\u PRINCIPAL'))
const pass=wait driver.findElement(By.name('AuthenticationFG.ACCESS_CODE'))
等待名称。发送密钥(用户名)
等待通行证。发送密钥(密码)
等待driver.findElement(By.id(“VALIDATE_CREDENTIALS1”)。单击()
wait driver.wait(直到.element可见(driver.findElement(By.id('LoginName')),1000)
wait console.log(driver.findElement(By.id('LoginName'))main
函数是异步的。您需要等待它完成
main().then((result) => {
// do stuff here
})
您需要调用getText()
来读取元素上显示的文本
let loginName = await driver.findElement(By.id('LoginName')).getText();
console.log(loginName);
await main()
正如AbhinavD指出的,使用:
main().then((result) => {
// do stuff here
})
您的主函数是async
,它返回一个承诺。承诺是一种可以解析、拒绝或挂起的数据结构。当承诺解析后,您可以对其调用。然后()
回调。下面的示例应该说明这一点:
异步函数测试(){
设随机值=5;
返回随机值;
}
让returnValue=test()
//这将记录promise对象
console.log(返回值);
//这将记录异步函数中返回的实际值
返回值。然后((值)=>{
console.log(值)
})
你能详细说明一下吗。我对这个东西不熟悉。driver.findElement(By.id('LoginName'))会返回一个承诺吗?是的,我想是的。是的,但得到了相同的承诺{pending}在调用它时尝试添加wait
beforemain()
。