WEB
у тебя прилетает строка в goto(promo)?
Tofa
Tofa
И на этом всё
WEB
после goto.then поставить .catch(e) и законсоль ошибку
WEB
подожди 30-40 секунд
WEB
должна ошибка прилететь
Tofa
А, ага. мой косяк, селектор не найден
WEB
ну вот
WEB
обрабатывай так все
WEB
каждый промисс
Tofa
А в качестве селектора что лучше всего подойдёт?
Tofa
чтоб его ждать
WEB
У тебя в любом случае, если ты хочешь писать хороший код, всегда должно быть .then .catch .finally
WEB
я беру обычно беру JS path. либо селектор
Tofa
А как мне в такой инпут что то засунуть?
Tofa
а лол, так легко, сори за вопрос глупенький)
Tofa
а я могу как то поменять имя класса? а то из за ввода кнопка неактивна становится
Tofa
Кажется для таких случаев тайп и нужен
Alhimik
Когда ты пишешь page.goto(), тебе возвращается промис. Ты можешь его ждать как одинм способом так и другим. Но не нужно смешивать .then().catch() и async/await. Пользуйся вторым. Он удобнее.
Alhimik
Ну и у тебя там не колбэк, ты сразу вызываешь console.log() и всё.
Alhimik
Просто убери все then и всё.
Alhimik
Перед puppeteer.launch добавь await а перед browser убери один await.
Alhimik
а если проверить на ссылку? она же меняется при успешной авторизации
Чтобы дождаться перехода на новую страницу есть метод waitForNavigation(): await Promise.all([ page.waitForNavigation(), page.click('a.my-link'), ]);
Tofa
а как проверить наличие дива?
Tofa
Как передать из вне что то в evaulate?
Vlad Vaviloff
Как передать из вне что то в evaulate?
https://github.com/puppeteer/puppeteer/blob/v10.4.0/docs/api.md#pageevaluatepagefunction-args можно сразу промотать до первого примера
WEB
Друзья, querySelector(input.class) = это значит, интпут с классом "класс?" или мне же (input[class='class']) - это инпут с классом "класс"?
WEB
Потому что, как я понимаю, первый способ он будет в родителе(в данном случае инпуте) будет искать уже в нем селектор с классом "класс"
WEB
?
WEB
я Уже на практике проверил, а то обычно при разработке я просто отсылался к вложенности,либо тупо к классу
WEB
в чем отличие keyboard.type и keyboard.press ?
WEB
тип, второй он 1 раз зажмет ( тип как нажатие юзера?)
WEB
и тип, можно например создать цикл из тайм-аут, чтобы симулировать так, будто бы юзер вводит
WEB
через keyboard.press()?
Alhimik
в чем отличие keyboard.type и keyboard.press ?
Через type ты можешь только текст вводить. А через press ещё и непечатаемые клавиши, такие как ArrowLeft, Shift, Backspace и т.д.
Ігор
Привет, а можно как-то поймать момент когда пюпитер скачает файл?
Ігор
Да, после сабмита сообщение о том, что они готовят отчёт и потом идёт загрузка в пюпитре, вот мне бы как-то поймать этот момент когда файл загрузился
Ігор
Вот как сейчас
Roman
Вот как сейчас
как вариант, проверить наличие файла на хосте через nodejs existsSync
Roman
Гляжу можно как-то через devtools protocol ловить прогресс загрузки https://chromedevtools.github.io/devtools-protocol/tot/Browser/#event-downloadProgress
Roman
Напиши, как решишь вопрос, интересно 😊
Ігор
Кроном запустить, чтобы каждые две секунды проверял просто
Roman
Кроном запустить, чтобы каждые две секунды проверял просто
https://chromedevtools.github.io/devtools-protocol/tot/Browser/#event-downloadWillBegin
Ігор
И ещё у меня проблема, в хедлес моде гугл не пускает авторизацию, при том, что при headless: false всё работает, может у кого такое было, что подскажите?
Roman
А, сори
Roman
В хедлесе не пускает, а в хедфуле - ок, понял
Ігор
Когда я вижу - все ок, когда прячю не работает
Ігор
А можно будет запустить headfull: false на линуксе? Мне мод любой подойдёт, главное чтобы парсило.
WEB
можно ли в evaluate использовать type на inpunt = await document.querySelector('.filter_price > input')?
Alhimik
Привет, а можно как-то поймать момент когда пюпитер скачает файл?
const client = await page.target().createCDPSession(); await client.send('Browser.setDownloadBehavior', { behavior: "allow", downloadPath: "downloads", eventsEnabled: true, }); client.on('Browser.downloadWillBegin', (res) => console.log("[Browser.downloadWillBegin]", res) ); client.on('Browser.downloadProgress', (res) => console.log("[Browser.downloadProgress]", res) );
Alhimik
Alhimik
можно ли в evaluate использовать type на inpunt = await document.querySelector('.filter_price > input')?
document.querySelector выполняется в контексте страницы, а type в контексте node.js.
artem
ребята объясните пожалуйста почему все идет не по плану: я хочу получить в переменную channels массив по селектору xPath если в консоли браузера поискать элементы по этому селектору то ты получишь массив, но пупетир мне его не возвращает когдя я пытаюсь посмотреть length - получаю андефайнд
artem
artem
и мне впринципе штимль загрузив эту переменную в cheerio
Andrey
page.$x(selector) попробуй
Alhimik
и мне впринципе штимль загрузив эту переменную в cheerio
Ты что-то не то делаешь. Во-первых, зачем тебе cheerio если у тебя есть pptr? Такие же селекторы, без дополнительных библиотек. Во-вторых, ты пытаешься загрузить элемент pptr в cheerio. cheerio только текст принимает и сам строит DOM.
artem
я хочу получить штимл со страницы
artem
скормить черио
artem
и получить данные
artem
котоые мне нужны
Alhimik
рзве чериу не штимл надо?
На предыдущем скриншоте не было видно innerHTML.
Alhimik
котоые мне нужны
Что мешает сделать это внутри pptr?
artem
ну не знаю