Alexander
может await page.waitFor('*') добавить
Alexander
вообще надо дождаться когда там отработают все скрипты
Alexander
это же после 'load'
Alexander
и даже после waitFor('*')
Alexander
а так? await page.$eval(selectorStr, elem => elem.click());
Alexander
или если await page.hover('#app_date')
Alexander
Тот чел, который исправит эту постоянную еблю с этими всеми waitами и кликами должен получить нобелевскую премию мира.
Alexander
1
Alexander
1
Alexander
Андрей К.
Здравствуйте
Нужен человек для написания e2e тестов на jest и puppeteer
Не подскажите, где искать?
Roman
Андрей К.
на хэхэ ру
По тэгу "Puppeteer" найдено одно более-менее подходящее резюме, и вряд ли этот человек пойдет на фриланс
Gambit501
Gambit501
Alex*
День добрый.
Чисто практический вопрос. Насколько эффективнее использовать локальный диспетчер прокси ( на уровне ОС ) не загружая этой задачей сам headless браузер. Парсер например не будет знать, что он работает через прокси.
John
John
не, я о другом немного, обычно прокси нужно для массового чего нибудь, после каждого успешного выполнения, нужно менять ip и отрабатывать еще puppeteer.
тут сразу два момента:
будет невозможно делать параллельно
как прокси программа на пк узнает что кукловод отработал, а тут значит уже руками надо
Alex*
John
Alex*
А какую версию puppeteer используют вод Win 7 и Win 10
Под Linux все ок. Но на Win валится
Alex*
вроде есть описание на Git
Андрей
Ребят, есть спецы по puppeteer в связке mongo, node-scheduller и Docker?
Нужно определить в каком месте происходит утечка памяти.
У меня запущены 4 парсера основных, 3 из которых парсят HTML.
И 1 основной парсер . Который парсит результаты работы указанных 4 сервисов.
Даже если подчисту рестартануть Docker и зачистить базы, то через несколько часов начинаются дикие тормоза.
Ищу консультанта, который за печеньки смог бы прояснить ситуацию.
1
Подскажите, как с веб страницы из JS кода извлечь переменную avail_dates, чтобы её можно было использовать в коде Puppeteer?
<script type="text/javascript">
$(document).ready(function() {
var avail_dates = ["03-11-2020","05-11-2020"];
});
</script>
Назар
1
Назар
или сделать $.exposed
1
Alexander
А можно ли в жс локальную переменную функции программно получить?
John
А если получить весь код в html, распарсить и регуляркой найти то что нужно
1
Alexander
Alexander
если просто исходники то можно document.querySelector('script') и все.
Alexander
ну или если динамически менять скрипт внутри то можно чето типа
await page.setJavaScriptEnabled(false); получить все скрипты, чето с ними сделать,
потом page.setJavaScriptEnabled(true), засунуть в страницу HTML без скриптов, await page.addScriptTag({ content: script });
Alexander
ну есть еще всякие page.evaluateOnNewDocument(), page.exposeFunction, че там эта функция вычисляет нужно подробнее смотреть
1
1
Подскажите, как нажать кнопку на сообщении Alert, которое открывает сам браузер? В окне 2 кнопки ОК и Отмена.
Andrey
https://pptr.dev/#?product=Puppeteer&version=v5.3.1&show=api-class-dialog
1
1
Andrey
странно, у меня норм, ну вот сразу решения: https://chercher.tech/puppeteer/alerts-puppeteer
Unknown
Ребят, нужна помощь по puppeteer.
Есть вот такой код:
await request.respond({
status: 200,
contentType: "application/json; charset=utf-8",
body: JSON.stringify(USER_DATA),
headers: {
"Access-Control-Allow-Credentials": "*",
"Set-Cookie": "name=value",
date: new Date().toUTCString()
},
});
Проблема: в браузере нет кук в ответе на этот запрос.
https://github.com/puppeteer/puppeteer/blob/v5.4.1/docs/api.md#httprequestrespondresponse
Подскажите, плиз, что я делаю не так и как можно вернуть респонс с куками?
* setRequestInterception - включен
Andrey
формат set-cookie возможно не нравится, маловато инфы
Alexander
Andrey
Andrey
Идей нет, когда разберешься напиши плз тут
𝑰𝒍𝒉𝒐𝒎
Всем привет. есть ли возможность сохранить изображение в кэше, чтобы сэкономить трафик при каждом запуске?
Назар
𝑰𝒍𝒉𝒐𝒎
const browser = await puppeteer.launch({headless:false,userDataDir: './cache/'});
Назар
𝑰𝒍𝒉𝒐𝒎
Да. Там папки появились после запуска
𝑰𝒍𝒉𝒐𝒎
𝑰𝒍𝒉𝒐𝒎
Назар
ну почему то не грузит.
𝑰𝒍𝒉𝒐𝒎
а как усилить кэш.
до включение папки было 1.2 мб, сейчас 900 кб
𝑰𝒍𝒉𝒐𝒎
await page._client.send('Network.setCacheDisabled', {
cacheDisabled: false
});
𝑰𝒍𝒉𝒐𝒎
Оставляю ответ тут
𝑰𝒍𝒉𝒐𝒎
https://github.com/puppeteer/puppeteer/issues/2497
Alexey
Всем привет!
Подскажите, как можно побороть такую проблему или куда копать?
в цикле вызываю page.$eval(selector, e => e.outerHTML);
но когда "наблюдаемая" страница обновляется, то у нее внутри, как я понимаю, перестраивается DOM, и в этот момент page.$eval может сильно тормозить.
т.е. если замерять время, которое требуется на page.$eval, то оно увеличивается на порядки.
Может это как то связано с тем, что поток, в котором выполняется javascript страницы, занят ее обновлением и папетир-вызов вынужден ждать...
Alexander
Всем привет!
Подскажите, как можно побороть такую проблему или куда копать?
в цикле вызываю page.$eval(selector, e => e.outerHTML);
но когда "наблюдаемая" страница обновляется, то у нее внутри, как я понимаю, перестраивается DOM, и в этот момент page.$eval может сильно тормозить.
т.е. если замерять время, которое требуется на page.$eval, то оно увеличивается на порядки.
Может это как то связано с тем, что поток, в котором выполняется javascript страницы, занят ее обновлением и папетир-вызов вынужден ждать...
await page.waitForNavigation({waitUntil: 'domcontentloaded'})
засунуть в цикл
Alexander
или чето такое
Alexander
или page.waitforselector
Alexey
цикл то я запускаю уже после того, как страница прогрузилась, просто на ней потом обновления начинают происходить (javascript шлет запросы на сервер и по ответам обновляет табличку с данными). И в page.$eval(selector, e => e.outerHTML); я как раз эту табличку пытаюсь достать
Alexander
Alexey
надо попробовать, но че то сомневаюсь, что дело в этом - в доке:
> Wait for the selector to appear in page. If at the moment of calling the method the selector already exists, the method will return immediately.
а селектор не меняется, и таблица на странице тоже все время есть, просто значения в ней обновляются
Andrey
ты хочешь изменения в таблице фиксировать?
Alexey
я хочу их забирать со страницы, т.е. это условно мониторинг данных, которые отображаются на странице