Я начинаю свое путешествие с этими технологиями (включая Javascript), поэтому вопрос для начинающих. Я изо всех сил пытаюсь выяснить, как утверждать, что данный текст в атрибуте HTML соответствует ожиданиям.
Фрагмент HTML:
<input name="8hv3a" type="radio" id="email-optout-8hv3a" value="1|optin|out" data-com.user-edited="yes">
Вот моя функция .it на данный момент, с использованием Mochai, Puppeteer и Chai (настройка и демонтаж исключены для ясности:
it('opt out of email', async function () {
await page.setDefaultNavigationTimeout();
await page.waitForSelector('.widget-title');
const frame = page.frames().find(frame => frame.name() === 'iframe');
const emailOptOutButton = await frame.$('#email-optout-8hv3a');
await emailOptOutButton.click();
const emailOptOutConfirmedValue = await frame.$('#email-optout-8hv3a', e => e.getAttribute('data-com.user-edited'))
expect(emailOptOutConfirmedValue).to.include('yes')
})
Все работает до события щелчка, но мое утверждение явно неверно. Ошибка:
AssertionError: object tested must be an array, a map, an object, a set, a string, or a weakset, but object given
Я пытался
it('opt out of email', async function () {
await page.setDefaultNavigationTimeout();
await page.waitForSelector('.widget-title');
const frame = page.frames().find(frame => frame.name() === 'iframe');
const emailOptOutButton = await frame.$('#email-optout-8hv3a');
await emailOptOutButton.click();
await page.$eval.emailOptOutConfirmedValue.getAttribute('data-com.user-edited')
expect(emailOptOutConfirmedValue).to.include('yes')
})
Что дает:
TypeError: Cannot read property 'getAttribute' of undefined
А также:
it('opt out of email', async function () {
await page.setDefaultNavigationTimeout();
await page.waitForSelector('.widget-title');
const frame = page.frames().find(frame => frame.name() === 'iframe');
const emailOptOutButton = await frame.$('#email-optout-8hv3a');
await emailOptOutButton.click();
const emailOptOutConfirmedValue = await frame.$('#email-optout-8hv3a', e => e.getAttribute('data-com.user-edited'))
assert.equal(emailOptOutConfirmedValue, 'yes')
})
Что дает:
ReferenceError: assert is not defined
Как я уже сказал, я новичок, поэтому обращайтесь за помощью!