кошмар - откуда берется документ? - PullRequest
1 голос
/ 23 мая 2019

Фрагмент кода ниже является примером из https://github.com/segmentio/nightmare

const Nightmare = require('nightmare')
const nightmare = Nightmare({ show: true })

nightmare
  .goto('https://duckduckgo.com')
  .type('#search_form_input_homepage', 'github nightmare')
  .click('#search_button_homepage')
  .wait('#r1-0 a.result__a')
  .evaluate(() => document.querySelector('#r1-0 a.result__a').href)
  .end()
  .then(console.log)
  .catch(error => {
    console.error('Search failed:', error)
  })

Я не могу обернуться вокруг этой строки:

.evaluate(() => document.querySelector('#r1-0 a.result__a').href)

Откуда приходит documentот?Код работает на Node.js, поэтому нет контекста браузера.Я проверил, что document не является глобальной переменной.Понятно тоже не параметр.Я также проверил, что пример кода работает.Как это возможно?

1 Ответ

3 голосов
/ 23 мая 2019

Эта функция стрелки передается в качестве параметра для запуска в браузере без заголовка Nightmare, где определено document.

.evaluate(() => document.querySelector('#r1-0 a.result__a').href)

Вы также можете передать дополнительные аргументы этой функции, например:

.evaluate((arg) => {
  document.querySelector('#r1-0 a.result__a').href);
}, 'test');
...