#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
ее разрешить, как и для других вещей.