#javascript #typescript #puppeteer #jest-puppeteer
Вопрос:
у меня тут чудак. Все еще пытаюсь разобраться во всем этом типовом сценарии. В основном у меня происходит то, что я пытаюсь вызвать функцию из файла утилит, который я создал, и я получаю — Ошибка оценки: Ошибка ссылки: testUtils_test_1 не определен. Проблема в том, что я пытаюсь вызвать функцию обхода, которую я создал. Вероятно, есть еще кое-что, что мне нужно исправить в самой функции, но я еще не совсем дошел до этого, так как функция даже не выполняется из моего теста. Я использую Jest кукловод и .ts
тест находится в файле .test.ts, а функция-в отдельном файле TestUtils.test.ts
- Я выполнил правильную инструкцию по импорту
Вероятно, это простая ошибка, которую я совершаю, но я новичок. Объяснения были бы полезны! Заранее спасибо.
test('testing', async () => {
// click on location targeting (there is three elements that match this selector)
await page.click('#root > div > div.euiPage.euiPage--paddingMedium.euiPage--grow.euiPage-- > main > div > div:nth-child(3) > div.euiFlexItem.euiFlexItem--flexGrowZero > div')
await page.waitForTimeout(3000)
console.log('far')
await page.waitForSelector('#showBusinessTypeFlyout')
await page.click('#showBusinessTypeFlyout')
console.log('keep')
await page.waitForSelector('ul[aria-label="Business type categories"]')
await page.$eval('ul[aria-label="Business type categories"]', () => { // could also use page.evaluate here
traverse('ul[aria-label="Business type categories"]')
})
expect(page).toContain('') // placeholder test
}, 100000)
// NEXT SNIPPET ///////////////////////
export const traverse = async function(selector:string){
// get children of selector as Elements
const list: HTMLCollectionOf<Element> = await page.$eval(selector, uiElement => {
return uiElement.getElementsByClassName('euiTreeView__node euiTreeView--compressed')
})
console.log(list.length)
// loop through each element in selectors array
for (let category of list) {
let sel = 'li[class=' category.getAttribute('class') ']'
console.log(sel)
await page.click('sel')
if (category.childElementCount > 0) {
await traverse(sel)
}
const list: HTMLCollectionOf<Element> = await page.$eval('ul[class=euiListGroup euiListGroup-flush euiListGroup-bordered', uiElement => {
return uiElement.getElementsByClassName('li[class=euiListGroupItem--small euiListGroupItem-isClickable')
})
console.log(list.length)
for (let businessType of list) {
let sel = 'li[class=' businessType.getAttribute('class') ']'
await page.click(sel)
await page.click('body > div:nth-child(21) > div:nth-child(3) > div > div.euiFlyoutFooter > div > div > button > span > span')
await expect(null) // placeholder
await page.click('#showBusinessTypeFlyout > span > span')
}
}
}