1
Селектор в коде имею ввиду выглядит как
Выше файл site.txt прикреплён. const selector = 'ng-select#location'; await page.waitForSelector(selector, { visible: true, timeout: 5000 }); await page.evaluate(selector => { document.querySelector(selector).scrollIntoView({ behavior: 'smooth', block: 'center' }); }, selector);
1
А какого типа поле? может проще туда передать значение через value ?
Динамически подгружаются элементы после нажатия, а вот нажать не соображу как.
1
А если через locator попробовать?
Через locator нажимается, спасибо! Буду дальше разбираться. await page.locator(selector).click();
🅰️nimeCoder
емае
🅰️nimeCoder
вы меня конечно извините, но тут человеку протезировать зубы как слиток золотой, а вы еще мишане) мишаня может и без зубов обойдется )
Лешка
скамер
🅰️nimeCoder
на прошлую работу как то приносили ворону для сканирования ноги, чтоб ей протез сделать хотелось сказать что лучше бы они ее грохнули) чтоб она не мучалась
👨‍💻
кто пробовал отключать на лету directx/blink модуль в браузере для остановки отрисовки ?
Null
кто пробовал отключать на лету directx/blink модуль в браузере для остановки отрисовки ?
> отключать blink Как ты представляешь себе отключение важнейшего модуля, который строит DOM-дерево, рассчитывает стили, встраивает движок V8 для выполнения JS и т.д.? > для остановки отрисовки Отрисовка это не просто отображение в виде пикселей, отрисовка это в том числе построение DOM, вычисление перекрытий, смешивание цветов (прозрачность и т.п.).
Null
кто пробовал отключать на лету directx/blink модуль в браузере для остановки отрисовки ?
Ну и самый главный вопрос - зачем ты это хочешь сделать? Если это попытка сэкономить ресурсы, то не получится. Финальная растеризация (перевод изображения, описанного векторным форматом в пиксели) не так чтобы много ресурсов съедаеи. А построение того самого DOM необходимо, чтобы корректно отрабатывали в том числе скрипты, потому что они могут быть завязаны на перекрытие/скрытие/прокрутку/состояние элементов.
1
Подскажите, почему вылетает puppeteer если не получает ответ XHR, хотя в try catch? throw new Errors_js_1.TimeoutError(`Timed out after waiting ${ms}ms`, { cause }) TimeoutError: Timed out after waiting 30000ms [cause]: undefined Node.js v22.14.0 Дополнено: Дополнено позже: помогло добавления глобального обработчика ошибок: process.on('unhandledRejection', (reason) => { if (reason.message.includes('waitForResponse')) { console.log('Ожидание XHR было прервано'); } });
Raso
Hey who has 403 cf issue? I have a solution
👨‍💻
Вопрос тогда в том, что финальная картинка все ещё занимает видеопамять, и как раз эта особенность меня сильно смущает. Не столь много процессорных ресурсов жрется, сколько памяти видеокарты.
👨‍💻
Dom - это всего лишь репрезентация js объекта. Как конкретно построение желаемый картинки происходит - не знаю. Все что описано в сообщениях выше с перекрытиям, смешкниванием цветов - это как раз оч лишняя вещь для меня, которая кушает ресурсы
👨‍💻
Сколько читал, везде blink ассоциировался с построением графики только. В любом случае там участвует directx, которое уже инструкции в себя принимает для видюхи. Отключив его, можно попробовать добиться отключение картинки. Или хотя бы зависание статическое.
🅰️nimeCoder
откуда композитор окон и прочего должен взять картинку и как собрать и куда еще потом ее поместить чтобы вывести ее тебе?
👨‍💻
а откуда ее должно рисовать?
Так я наоборот не хочу, чтобы картинка вообще как-либо рисовалась
Sektor
парни а кто через cdp работает не случалось такое что внезапно вебсокет переставал отвечать на запросы? А потом сам так же начинал отвечать нормально. Хотя если параллельно законнектиться руками то все нормально
Sektor
это не сразу, а типа если 1-2 дня постоит софт то замечаю такое. в 1 поток работа идет
Sektor
нужно например заново на страницу перезайти или что-то еще сделать и внезапно начинается что таймаут получения ответа от вебсокета
Null
Dom - это всего лишь репрезентация js объекта. Как конкретно построение желаемый картинки происходит - не знаю. Все что описано в сообщениях выше с перекрытиям, смешкниванием цветов - это как раз оч лишняя вещь для меня, которая кушает ресурсы
DOM - это просто объекты с параметрами, которые представляют HTML-разметку. Есть ещё CSSOM. А всё это вместе формирует Render Tree. Т.е. в самом этом дереве есть описание объектов и их параметров. Но там нет "геометрии" и перекрытий. Для этого есть этап Layout: - Определение координат (x, y, w, h) - Вычисление позиций и размеров элементов (пиксели) Потом идёт этап Compositing (разбиение на слои и оптимизация перерисовок/перерасчётов). Ещё какие-то там этапы есть. И только потом происходит растеризация - преобразование векторных команд в пиксели (может выполняться на GPU или CPU). Я не знаю какой процент он занимает от общего пайплайна, но не думаю что сильно много, особенно если есть GPU. А вот расчёты выполняются только на CPU и нет возможности их никак пропустить. Ведь не зная какой элемент над каким находится, виден ли он, находится ли он во вьюхе и т.д. не получится понять над каким элементом вызывать событие наведения курсора, к примеру, не понятно так же что делать когда пользователь делает клик (куда именно? какой элемент в данный момент выше), или прокрутку (что крутим - таблицу, блок, страницу и т.д.).
Null
Но по хорошему конечно же лучше сделать замеры сколько уходит на каждый этап, отрисовка на GPU и CPU.
Null
https://www.youtube.com/watch?v=K2QHdgAKP-s
pancake ✨🥞
Добрый день! Кто-нибудь сталкивался в Puppeteer с проблемой out of memory, раньше при том же функционале бота все работало замечательно, сейчас возникают утечки памяти. Не знаю что делать, может кто сталкивался в последнее время? использую node.js + puppeteer + chromium
pancake ✨🥞
Делай снапшот и ковыряй
снапшот в смысле сохранять скрин и html разметку? а можно ли как-то сохранять еще и данные по памяти, которые видны в девтулс?
Andrew
Добрый день! Кто-нибудь сталкивался в Puppeteer с проблемой out of memory, раньше при том же функционале бота все работало замечательно, сейчас возникают утечки памяти. Не знаю что делать, может кто сталкивался в последнее время? использую node.js + puppeteer + chromium
Самый быстрый вариант - чекпоинты... у тебя там либо циклы, либо открытия вкладок / браузеров / страниц... в первую очередь проверяй-отключай циклы.... если OOM исчезает - копай внутри цикла уже... может что не закрываешь, может exception какой-то есть и после него page / context / browser не закрывается и создаётся новый
pp
Всем привет, подскажите, кто-нибудь сталкивался с капчей от vercel, которая требует решать задачу? Проблема в том, что токен я получаю, но запросы всё равно не проходят.
Sektor
а кто-нибудь знает как occlusion в хроме отключить? флаги пробовал но не помогают
Sektor
если хром свернут то запросы к нему через cdp очень туго обрабатываются
Виталий
@all Всем привет) Есть вопрос - кто-то уже нашёл актуальное решение для cloudflare капчи?) У меня в infinite loop уходит и не пускает)
Виталий
если хром свернут то запросы к нему через cdp очень туго обрабатываются
та же фигня Решил вопрос безголовым режимом (headless: 'new')
Виталий
Только так
Виталий
Если в видимом режиме запускать хром, то в любом случае при сворачивании будет зависать)
Виталий
ну хедлесс палится же наверное
Headless: new норм работает)
Виталий
У меня даже в видимом режиме больше проблем было, чем в безголовом)
Sektor
а как его включать?
Null
Если в видимом режиме запускать хром, то в любом случае при сворачивании будет зависать)
А зачем сворачивать? В идеале всё должно работать так как у реального юзера.
Виталий
headless: "new" и флаг '--no-sandbox' нужно добавить в args
Виталий
А зачем сворачивать? В идеале всё должно работать так как у реального юзера.
Это вопрос про то, вдруг кто-то хочет в видимом режиме запустить и свернуть, своими делами дальше заниматься)
Виталий
У кого-то может не быть сервера и он тупо у себя на компе запускает на фоне
Виталий
В видимом режиме всё резаться будет, хз как это работает
Виталий
Типа фокус терятся что ли
Null
Это вопрос про то, вдруг кто-то хочет в видимом режиме запустить и свернуть, своими делами дальше заниматься)
Видел какое-то решение, там можно окно прозрачным и некликабельным сделать автоматически.
Null
Но у меня винды нет, так что не знаю как.
Виталий
Я пробовал, не помогло) При сворачивании скрипт будто просто вставал на месте и ждал, пока фокус в окно заново сделаешь И отвал по таймауту дальше
Sektor
у меня на CDP на моем компе все решается на ура
Sektor
а на сервере нет
Sektor
хз в чем дело
Sektor
может кто-нибудь знающий подскажет
Виталий
а на сервере нет
На серваках была такая беда
Sektor
На серваках была такая беда
у меня тож было сначала на винсерв 2019
Виталий
Я на винде в итоге брал сервак с видеокартой, выделенный сервак Работало)
Sektor
потом взял на вин10 сервак
Sektor
и все равно
Виталий
На линкусе почему-то не всегда отрабатывает в безголовом, если говорить про работу по ssh
Sektor
Я на винде в итоге брал сервак с видеокартой, выделенный сервак Работало)
ну может и в ней дело конечно, но если через винапи кликать или руками то все кликается и решается нормально
Виталий
Интересно
Sektor
а цдпшный клик почему-то палится именно на сервере
Виталий
У меня беда с этим, а надо задачу решать срочно
Sektor
нет же, говорю же я через CDP
Виталий
100 из 100 не проходит
Null
а цдпшный клик почему-то палится именно на сервере
Почему думаешь что именно клик? Может просто видят что твой IP серверный?
Sektor
и у меня на моем компе все супер а на серваке нет
Sektor
а он решает
Sektor
если кликнуть руками все норм
Виталий
Почему думаешь что именно клик? Может просто видят что твой IP серверный?
Я пробовал полную эмуляцию всего под Турцию с качественными прокси даже То же самое)