Roman
Вроде понял
Roman
спс
Roman
не, кликать не надо все уже сделал , ну hover надо было сделать и не вышло апхапх ну и ладно
Roman
Roman
Ну я потратил где-то 30 мин , маус не пробывал
Roman
Андрей
Привет, Ребят,
Подскажите, пожалуйста:
В браузере по данному адресу перехожу, получаю ожидаемый JSON
http://127.0.0.1:4004/dicts/measures
С localhost:3012 Кидаю запрос:
axios.get(http://127.0.0.1:4004/dicts/measures)
Ловлю в логах:
connect ECONNREFUSED 127.0.0.1:4004
Alexander
Привет, подскажите что почитать про то как организовать проект на puppeteer, вроде реализую пейдж обжект, выношу переменные, есть конфиг и хелперы, но чувствую что как-то не оптимально.
John
John
Обычно я делаю вообще все в одном файле, потом выношу функции в отдельные файлы.. не могу себя приучить делать сразу правильно, приходится рефакторить постоянно
Gambit501
Всем привет, кто в теме объясните пожалуйста, что в итоге будет с кукловодом? раз уже вроде как сам его разраб пилит playwright, может кто там форумы буржуйские читает или хз, может будет потом слияние, и кукловод станет playwright?
Назар
Pavel
Pavel
В puppeteer работает 1 разраб, сейчас мигрирует на тайпскипт все, потом наверно начнет фичи пилить.
Pavel
Playwright запускается почти так же, апи немного другое и нужно выдавать права на каждый чих.
Я нашел небольшую разницу в 3 примерах из 360 мой скрипт для пуппетера валится в playwright, но пока не понял где именно эта разница. В тепличном мини примере все ок.
Назар
Pavel
Pavel
Это зависит все от CDP
Pavel
Pavel
В cdp есть screencast, и ты можешь эмулировать его скриншотами.
Nikita
Господа. Такой вопрос. Как мне лучше поймать лоадинг скрин, который рандомно вылетает на странице, если сайт подвиснет?
Пробовал вешать события, не работает. Работает только "page.on('request')" но криво, слишком много ложных срабатываний.
Мне нужно как-то следить, появился лоадинг скрин или нет, и если да, то ждать пока не закроется
Anonymous
Alex*
День добрый!
А c какими параметрами запустить puppeteer для идентификации процессов?
Чтобы через ps различить запущенные проекты.
Gambit501
Gambit501
Это наверн должно помочь
Gambit501
Alex*
Alex
Есть разница в производительности открывать новую вкладку с новым контекстом и прокси, или новый браузер?
Alex
Точнее не так, понятное дело что есть, но на сколько она весомая ?
Horus
Ребят, доброе утро всем, никто не сталкивался с ошибкой "Must use import to load ES module" при работе с puppeteer? В проекте используется ТОЛЬКО он. Что странно: у меня и под линью и под виндой такой ошибки не возникает, но у работодателя проект не заводится и падает с этой ошибкой, require нигде не использую, только импорты
Horus
Разобрался — это ошибка ноды lts версии
Gambit501
Gambit501
вот к примеру тект с хабра
Gambit501
Распараллеливайте браузеры, а не веб-страницы
Итак, мы поняли, что браузер запускать нехорошо и нужно делать это только в случае крайней необходимости. Следующий совет — запускать только одну сессию на каждый браузер. Хотя в реальности можно и сэкономить ресурсы, распараллелив работу через pages, но если упадёт одна страница, она может повалить весь браузер. К тому же не гарантируется, что каждая страница идеально чистая (куки и хранение могут стать головной болью, как видим).
Gambit501
Каждый новый инстанс браузера получает чистый --user-data-dir (если не указано иное). То есть он полностью обрабатывается как свежая новая сессия. Если Chrome по какой-то причине упадёт, то не потянет с собой также и другие сессии.
Aleksandr
начал разбираться с headless. И наткнулся на такую проблему с установкой puppeteer:
Aleksandr
а при запуске примера по сохранению pdf
Error: Cannot find module 'puppeteer'
at Function.Module._resolveFilename (module.js:548:15)
at Function.Module._load (module.js:475:25)
at Module.require (module.js:597:17)
at require (internal/module.js:11:18)
at Object.<anonymous> (/home/alex/domen/edsc/index.js:1:81)
at Module._compile (module.js:653:30)
at Object.Module._extensions..js (module.js:664:10)
at Module.load (module.js:566:32)
at tryModuleLoad (module.js:506:12)
at Function.Module._load (module.js:498:3)
John
Ты прописал зависимость модуля?
John
const puppeteer = require('puppeteer')
Aleksandr
первой строкой
John
А установил? Если не работает попробуй поставить версию постарше npm i puppeteer@2.1.0
John
Не глянул даже.. в ошибках все пишется, главное читать:(
Aleksandr
Aleksandr
Усп v8.17.0
Aleksandr
Еще раз спасибо!
Ислам
Всем добрый вечер, я как понял, в пупетире до сих пор нет универсального способа захендлить новую вкладку?
Ислам
https://github.com/puppeteer/puppeteer/issues/3718
Ислам
люди предлагают много чего, но у меня кейс заключается в том, что клик по кнопке делает запрос на редирект в новой вкладке
Ислам
когда не в безголовом режиме то все окей, новая страница получает редирект и переходит
Ислам
а в безголовом все перестает работать
Nikita
Nikita
У меня вот такой вопрос.
Как лучше и корректнее прописать ожидание ответа на запрос?
Ну что-то вроде:
page.on('request', async(req)=>{
if(req.resourceType()==='xhr'){
await page.waitForResponse(req);
}
});
Nikita
Что бы скрипт ждал ответ каждый раз, когда уходит запрос типа 'xhr'
Nikita
В гугле походу забанили, не нашёл примеров подобных
Ислам
https://pastebin.com/rRZDY1Vn
Вот такой штукой не пробовал?
Да, я так и получаю страницу
но покопавшись обнаружил, что в безголовом режиме происходит ssl ошибка, из-за того что не отправляю сертификат, в других запросах всегда отправляю просто через page.on('request') перехватываю и добавляю agentOptions. А вот запрос из новой вкладки не так просто перехватить и корректно отправить. Уже давно есть тикет: https://github.com/puppeteer/puppeteer/issues/3667
Nikita
Ислам
Кстати в Playwright эта проблема уже решена, так что придется по тихоньку на него валить
Nikita
:С грустно :С
Ислам
когда headless false хром просит выбрать сертификат и летит дальше
Nikita
Вопрос. Сколько может жить соединение по веб сокету?
через Puppeteer.connect.
У меня при запуске сервера puppeteer сразу цепляется к сокету. И при запросе в браузере создается новая вкладка и в ней начинается работа.
Проблема в том, что через 30 минут начинают сыпаться ошибки page.crashed при попытке прогрузить страницу. и чем дальше, тем хуже. Чем дольше работает, чем больше запросов, тем чаще сыпятся ошибки.
Может быть проблема в коннекте? Что-то вроде забития памяти при синглтон подключении?
John
John
https://www.npmjs.com/package/pending-xhr-puppeteer
Nikita
Возможно плагин стабильнее работать будет. Нужно тестить :)
Aleksandr
Ребят, пытался дату поменять в лоб. Не дает! а как поменять значение селектора не соображу! Дайте наводку!
Ислам
Ислам
Это jQuery Datepicker, можно js код на странице выполнить и использовать селектор jquery.
Aleksandr
Пытался. Он и на странице не даёт ввести только через выбор месяца и конкретной даты формы ввода.
Ислам
Aleksandr
Jquery не знаю. В моём распоряжении нативный js на начальном уровне и туториал по кукловоду.
Ислам
сам код можно выполнить через
page.evaluate(()=>{ ... }
Aleksandr
Как раз этим сейчас и занимаюсь.
Как поставить паузу для просмотра выполнения кода в режиме отображения?
Ислам
waitFor?
Ислам
есть еще это, но сам не пользовался