Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 通过Nodejs获得硒的待定承诺_Node.js_Selenium_Selenium Webdriver - Fatal编程技术网

Node.js 通过Nodejs获得硒的待定承诺

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

我正在尝试使用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 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
before
main()