artem
я просто докинул await к isValid и заработало как швейцарские часы
artem
и еще вопрос
Anonymous
ну и хорошо, что помогло
Anonymous
Хотя, я бы все-равно сделал функцию, тк для меня так удобнее было
artem
вот так isValid выглядит внутри я не стал получать весь контент со тсраницы а решил сделать просто awaitXpath
artem
и если оно не дожидается его в течении одной секунды
artem
то сессия считается невалидной
artem
насколько такое решение надежное
artem
на маленьком колличестве сессий показывает себя нормально
artem
или стоит лучше получить контент страницы и искать там мой селектор?
Anonymous
не могу прям так сказать
Anonymous
затести лучше
artem
вроде все отлично
artem
но я не могу понять когда начинает отсчитываться этот таймаут
artem
после полной загрузки страницы или сразу после редиректа
artem
вроде поставил на 100 мс
artem
все работает также как и с 1с
artem
значит всетаки после полной загрузки?
Andrey
page.goto у тебя всё делает
artem
т.е все отлично
artem
можно оставить так?
artem
просто я не понимаю зачем тогда waitForNavigation
artem
если page.goto дожидается загрузки
artem
artem
разобрался
artem
спасибо
Alhimik
т.е все отлично
Если искомый элемент сразу присутствует в теле страницы - да. Но если он добавляется/модифицируется после загрузки страницы с помощью JS, то нет. Это нужно смотреть на конкретной странице уже.
artem
объясните в чем проблема, у меня простенький скрипт который открывает сессии по очереди если не дожидается определенного селекторо то закрывает вкладку с ошибкой и переходит к следующей сессии, где-то после десятка итераций начинают дублироваться вкладки браузера
artem
что понятное дело никчему хорошему не приводит
artem
artem
еще есть проблема с тем что вкладка не всегда может прогружаться
artem
и она падает в ошибку
artem
а мне очень важно чтоб каждая вкладка прогружалась
Andrey
в первом catch браузер закрывай
artem
artem
че-то я жестко затупил
Andrey
return там тоже без результата, но не вижу как код вызывающий написан
artem
artem
писал быстро, не ругайтесь сильно
artem
а можно как-то решить проблему с вкладками которые не загружаются?
artem
например трай кетчем
artem
если при попытке перейти на мой юрл пупетир получил ошибку то мы закрываем браузер и снова пытаемся перейти по юрл
Andrey
много чего можно написать... в is valid я бы все падающее обернул в try/catch/finally. Браузер столько раз перезапускать - дорогая операция, посмотри в сторону createIncognitoBrowserContext.
Andrey
artem
artem
как нет соединения
Andrey
console.log для исключения e и от этого уже плясать
artem
можно как-то перезагрузить вкладку в пупетире?
Andrey
page.reload
artem
вау там метод есть даже
artem
я думал только если джаваскрип в evaluete выполнять
Alhimik
Зачем ты используешь метку во втором catch? Она же ничего не делает.
Alhimik
Перед page.setUserAgent() поставь await, так как возвращается промис.
Alhimik
Ну и вместо:
const page = await browser.newPage();
Можно использовать (уже открытую вкладку):
const [page] = await browser.pages();
artem
а можно как-то сделат ьтак чтоб эта первая вкладка не открывалась вместе с браузером?
artem
почему когда я вписываю в консоль $x(мой селектор) я получаю нужный мне массив объектов
artem
а когда делаю тоже пупетиром получаю ничего 😢
artem
Runker
Привет!
Столкнулся с такой проблемой. Если передаю в хедере токен сессии, то при открытии страницы ничего не рендерится, в нетворке видно как каждые пару секунд переоткрывается вебсокет-соединение.
Пробовал без токена, заполнять форму авторизации, после нее страница нормально загружается.
Runker
Сталкивался кто-то с таким?
Runker
Токен пропихиваю через page.setExtraHTTPHeaders
Alhimik
Runker
Спасибо, попробую
Runker
Alhimik
Andrey
Под socks5 с авторизацией какое решение рабочее есть? puppeteer-page-proxy с https пока не получается завести
🦋noteee
Получится ли использовать socks5/4/http(s) прокси как с авторизацией как и без?
Слышал, что могут быть проблемы с соксами
Andrey
вчера только наладил
Andrey
нет проблем
Andrey
puppeteer-page-proxy для браузера, socks-proxy-agent для запросов
Tofa
Здравствуйте, подскажите пожалуйста, как мне правильно запарсить список
Tofa
Roman
Виктор
Доброй ночи, кто то может подсказать, как подключится к android устройству через puppeteer
например в chrome по chrome://inspect/#devices я вижу устройство и могу подключится.
Но особо не понимаю как это сделать через puppeteer, где брать ws адрес или что то еще..
Было бы лучше если я заранее еще видел список устройств к которым могу подключится, и выбирать потом.
Alhimik
Alhimik
Потом можно работать как и обычно через connect(), указав эндпонит. Но я сейчас попробовал, не удаётся подключиться именно из puppeteer. Хотя если подключаться напрямую через CDP или через playwright, то всё работает. Вероятно что-то изменилось в новых версиях.
Alhimik
Нашёл 2 ишью, в которых упоминается такая же проблема, и разработчик отвечает что работа с андроидом не является приоритетной.
1. https://github.com/puppeteer/puppeteer/issues/2067 (2018-2019)
2. https://github.com/puppeteer/puppeteer/issues/4937 (2019-2020)
Если это действительно нужно, придётся найти проблему самому. Или использовать playwright.