Как кукловод берет переменную из области окна - PullRequest
0 голосов
/ 13 декабря 2018

Я хочу получить объект из области окна, используя функцию оценки.Это мой код.

Это переменная в области видимости окна.

let testCase = JSON.stringify({foo: bar});

Это код кукловода, который я использую для получения значения из переменной testCase.

console.log(await page.evaluate(() => testCase));

Вывод:

undefined

Я знаю, что аргументы функции оценки кукловода должны быть сериализованы, поэтому я использую Json.stringify (), но все равно не работает!

Любая помощьвысоко ценитсяСпасибо.

1 Ответ

0 голосов
/ 14 декабря 2018

Настоятельно рекомендуется следить за ошибками при отладке безголовых скриптов - делать скриншоты, ждать появления необходимого элемента, а также перехватывать js-ошибки из контекста страницы, например:

page.on('pageerror', err => console.log(err));

С этимобратный вызов на месте становится понятным, почему результат равен undefined:

[Ошибка: ReferenceError: бар не определен

Кажется, что переменная barне определено на целевой странице, поэтому присвоение testCase невозможно, поэтому оно остается неопределенным.

Или, если вы уверены, что bar действительно определено, возможно, оно создано позже в жизни страницы, после вы делаете page.evaluate.В этом случае вы хотите использовать page.waitFor , чтобы дождаться его:

await page.goto(url)
await page.waitFor(() => typeof(testCase) !== "undefined") // <== WAITING
console.log(await page.evaluate(() => testCase));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...