Строковая переменная идентификатора кукловода не будет анализироваться; Не уверен почему - PullRequest
1 голос
/ 20 апреля 2020

Я пытаюсь использовать строку внутри строки кукловода, по какой-то причине она не будет работать.

В частности, с этим кодом

await page.waitForSelector('div[class = "sh-dlr__list-result"')

Когда я пытаюсь разбирать переменную

let identified1 = 'div[class = "sh-dlr__list-result"'

, поэтому

await page.waitForSelector(identified1)

не будет работать. Это действительно ограничивает, есть ли способ обойти эту проблему?

Это расширенный код

https://jsfiddle.net/hewlbern/6p7kdozt/10/ Запустите его на своем компьютере, jsfiddle не уверен, смогу ли я запустите его оттуда.

Я считаю, что это сейчас вызывает ошибку cors - очень странно! Почему при использовании переменной возникает ошибка cors: /

Спасибо!

1 Ответ

2 голосов
/ 20 апреля 2020

Причина в том, что вы объявляете identified внутри page.evaluate(). Итак, когда вы делаете следующее, это уже выходит за рамки.

if (currentPage < pagesToScrape) {
  console.log(identified1);
  await Promise.all([
    await page.click(buttonSelector),
    await page.waitForSelector(identified),
  ]);
}

Вы записали identified1, но вы используете identified для селектора.

Вы будете необходимо передать identifier2 в pageFunction примерно так:

let newProducts = await page.evaluate(({ identifier2 }) => {
  // ...
},{ identifier2 });

См. здесь некоторые примеры:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...