страница кукловода оценивает использование требует модуль в странице оценивает - PullRequest
0 голосов
/ 28 апреля 2020

Я не понимаю, как использовать модуль в page.evaluate, я также нахожу этот пост на SO: Как передать требуемый объект модуля на страницу кукловода. SO

, но я не понять, как его использовать, у меня было:

await page.addScriptTag({ path: './node_modules/fs.realpath/index.js'});

я получил:

Ошибка: ошибка оценки: TypeError: fs.appendFileSyn c не является функцией

const fs = require('fs');

page.evaluate(()=>{
        let elements = document.querySelectorAll("a.myclass.vid");

        elements.forEach((element, index) => {
            fs.appendFileSync("textresult.txt", element.textContent+"\r\n");
        })

    });

спасибо за ваше объяснение: o)

1 Ответ

0 голосов
/ 28 апреля 2020

Эта анонимная функция, которую вы передаете page.evaluate () , запускается в контексте работающего кукловода веб-страницы, поэтому, конечно, она не знает, что такое fs. Вам нужно вернуть что-то из этой анонимной функции, а затем вызвать fs.appendFileSync с этим:

const texts = await page.evaluate(() => {
  return document.querySelectorAll('a.myclass.vid').map((el) => {
    return el.textContent + "\r\n"
  })
})

fs.appendFileSync('textresult.txt', texts)
...