У меня есть тест драматурга, который входит в мою систему как привилегированный пользователь и создает нового пользователя. Я надеялся, что смогу затем скопировать имя пользователя и пароль (которые отображаются в html-таблице с полями с индивидуальными идентификаторами для каждой ячейки). Я думал, что этот код работает:
// copy username and password
const username = await page.locator('#username0').selectText();
const password = await page.locator('#passwd0').selectText();
const screenshot4 = await page.locator('#CreatedUsers').screenshot();
await testInfo.attach('admin_002-usercReated_selectedPW0', { body: screenshot4, contentType: 'image/png' });
expect(username).not.toBeNull();
expect(password).not.toBeNull();
пока я не добавил эти утверждения:
expect(username).not.toBeUndefined();
expect(password).not.toBeUndefined();
Скриншот доказывает, что выбирается правильная информация:
Итак, я предполагаю, что моя проблема в том, что назначение const испорчено из-за ожидания.
Я вижу ошибку TS ts(2345), если попытаюсь изменить жестко запрограммированное значение из генератора кода с помощью моей константы:
await page.getByPlaceholder('Brugernavn').fill(username);
Но я не уверен, как мне решить эту проблему. большая часть моих поисков показала, что мне следует изменить возвращаемое значение вызова в await. Но я не могу, поскольку это функция драматурга.






Читая документацию locator.selectText возвращает Promise<void>
Вместо этого я попробовал locator.innerText, который возвращает Promise<string>
и это решило проблему.
Связано: Драматург: Как сохранить текстовое содержимое элемента в переменной и записать его в консоль?