Получение обещания в Селене с Nodejs - PullRequest
0 голосов
/ 06 июня 2018

Я пытаюсь создать автоматическую регистрацию в банке, используя selenium с nodejs, и застрял в 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()

Я пытаюсь напечатать имя пользователя после пропадания имени пользователя на странице, но оно продолжает даватьОбещание {в ожидании}.

Любая помощь будет оценена.

Ответы [ 3 ]

0 голосов
/ 06 июня 2018

Вам нужно позвонить getText(), чтобы прочитать текст, отображаемый на элементе.

let loginName = await driver.findElement(By.id('LoginName')).getText();
console.log(loginName);


await main()
0 голосов
/ 06 июня 2018

Как отметил AbhinavD, используйте:

main().then((result) => {
// do stuff here
})

Ваша основная функция - async, она возвращает Обещание.Обещание - это структура данных, которая может быть разрешена, отклонена или ожидает обработки.Когда обещание выполнено, вы можете позвонить на него .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)
});

Функция async по существу разрешает обещание с возвращенным значением.

Обещания сами по себе являются обязательной темой для тех, кто хочет часто работать с JS.Так что здесь является более подробным источником:

0 голосов
/ 06 июня 2018

main функция асинхронная.Вам нужно дождаться его завершения.

main().then((result) => {
// do stuff here
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...