Получение ожидающего выполнения обещания в selenium для веб-элемента, используемого в утверждении

#javascript #node.js #selenium #selenium-webdriver

#язык JavaScript #node.js #селен #селен-веб-драйвер

Вопрос:

Я просто пытаюсь запустить простой тест, используя selenium с библиотекой chai для утверждения. Webdriver выполняет скрипт для установки токена для входа в систему. Я вижу в пользовательском интерфейсе, что он нормально входит в систему, но тест завершается неудачей при утверждении, когда статус веб-элемента находится в ожидании. Есть идеи, что я здесь упускаю. Спасибо!

Вот фрагмент кода

 const {Builder, By, Key, until} = require('selenium-webdriver'); let chai = require('chai'); let expect = chai.expect; require('chromedriver');  (async function example() {  let driver = await new Builder().forBrowser('chrome').build();  await driver.get('http://localhost:4200/login');  driver.executeScript('window.localStorage.setItem("token", "xyz");');  driver.executeScript('window.localStorage.setItem("lastAction", "'   Date.now()   '");');  await driver.wait(until.titleIs('XXXX'), 1000);  expect(driver.findElement(By.id('welcome-header')).getText()).to.equal('ZZZZZ');  })(); 

И ниже приведена ошибка, которую я получаю

 expect(driver.findElement(By.id('welcome-header')).getText()).to.equal('ZZZZZ');  ^ AssertionError: expected {} to equal 'ZZZZZ'  at example (******e2e-spike-copytestslogin_test_copy.js:13:74)  at processTicksAndRejections (node:internal/process/task_queues:96:5) {  showDiff: true,  actual: Promise { lt;pendinggt; },  expected: 'ZZZZZ',  operator: 'strictEqual' } 

Ответ №1:

driver.findElement() это асинхронная функция, поэтому вы должны await ее разрешить, как и для других вещей.