Captain Maslori
если он не работает в вашей задаче - это другой вопрос, но такого в вашем сообщении не вижу...
Alhimik
Captain Maslori
Captain Maslori
а также сюда return и снятие observer-a
User
Alhimik
.filter а лучше .some
Чем он лучше? Тем что создаст новый ненужный массив?
Вообще это дело вкусов, кто-то предпочитает функциональный стиль, кто-то императивный.
Alhimik
а также сюда return и снятие observer-a
Кстати, это да, можно снять.
Но, я не припомню ни одного случая, когда мне это действительно нужно было бы в контексте pptr. Когда расширение для браузера пишу, там обычно такое нужно. Чтобы не нагружать страницу. Но pptr обычно отработал и перезагрузка страницы происходит. Хотя, конечно от задачи зависит.
User
Открытие страницы, нажимается кнопка и дальше пустой экран (скрин), код страницы тоже пустой. Задержки разные ставил и по 5 сек и по 30 сек после нажатия кнопки. Если вручную тоже самое делать, то нет проблем. Куда смотреть?
Captain Maslori
Чем он лучше? Тем что создаст новый ненужный массив?
Вообще это дело вкусов, кто-то предпочитает функциональный стиль, кто-то императивный.
меньше букв больше смысла и у Вас переменная mutation не используется => ну собсно а зачем здесь этот императивный стиль
если переживания по поводу ненужного массива то ramda или самописный some на [Symbol.iterator]
я говорю просто про то что есть общевнятный лаконичный инструмент - some - реализовать можно и лучше, а блок кода тут с переменной имхо тут не нужен
Alhimik
Alhimik
Captain Maslori
если бы мне нравилось писать код внутри eval я бы так же говорил, а еще что я всё контролирую и не допускаю ошибок следовательно норм
Alhimik
Ну если приведёшь пример кодстайла, который прямо требует/рекомендует использовать функциональный подход против императивного везде где это можно, тогда ещё можно обсудить.
User
Alhimik
Я вот всегда пишу в императивном стиле. Фильтры и мапы использую конечно, когда они реально нужны.
Captain Maslori
Alhimik
Alhimik
Не важно, кодстайл это холиварные темы, не вижу смысла их обсуждать. Каждый будет писать как ему нравится. И это нормально.
Alhimik
А если в команде пишешь то так же придётся изменить свой подход под принятый стиль.
Max
привет всем. Кто с капчами работает, ни у кого в последние несколько дней не наблюдается проблем с invisible recaptcha? Как-то стала она pupetteer детектить, даже через ферму не получается обойти защиту.
Denzel
Всем привет нужно доработать бота , $ пишите в лс
Sander
Добрый вечер, обновил версию puppeteer,
после чего некоторые функции перестали работать:
- скриншот
- закрытие таба браузера
в launcher добавлены конфигруации `{ args: ['--single-process'] }`,
из-за этой конфигруации оно и ломается, хотя раньше все работало..
но если запускается программа в "lambda функции", то она должна быть включена, помню возникали проблемы,
когда программа пыталась работать в несколько потоков, может кто сталкивался с такой проблемой
Sander
Not exactly, but yes... AWS Lambda only gives us one CPU, which means we are forced to use the --single-process argument. On the other hand, incognito mode won't work in --single-process mode.
Sander
const run = async () => {
const browser = await apifyLaunch()
const page = await newPage(browser)
await page.goto('https://youtube.com/')
await delay(3000) // ?
await page.screenshot({ fullPage: false, path: 'screenshot1.png' })
await page.evaluate(() => {})
await browser.close()
}
;(async () => {
await run()
})()
---
- без delay(3000) - все работает
- с delay(3000) и без "--single-process" - тоже работает
- с delay(3000) и с "--single-process" - не работает
собственно мне не понятно, как решить эту проблему, это же обычный setTimeOut, почему елси puppeteer запущен в одном потоке,
то возникают такие проблемы, можно ли что-то сделать, так как я могу запустить ее только таким образом
1
const run = async () => {
const browser = await apifyLaunch()
const page = await newPage(browser)
await page.goto('https://youtube.com/')
await delay(3000) // ?
await page.screenshot({ fullPage: false, path: 'screenshot1.png' })
await page.evaluate(() => {})
await browser.close()
}
;(async () => {
await run()
})()
---
- без delay(3000) - все работает
- с delay(3000) и без "--single-process" - тоже работает
- с delay(3000) и с "--single-process" - не работает
собственно мне не понятно, как решить эту проблему, это же обычный setTimeOut, почему елси puppeteer запущен в одном потоке,
то возникают такие проблемы, можно ли что-то сделать, так как я могу запустить ее только таким образом
Попробуйте другие версии puppeteer поперебирать, очень частно на одной версии работает, а на другой, что-то уже не работает.
Дима
Error: We either navigate top level or have old version of the navigated frame
как убрать эту ошибку или хотя бы чтобы скрипт не останавливала, try catch почему-то не срабатывает
精神に強い
Приветсвую, знает кто как найти кнопку с кастомным аттрибутом и нажать на нее?
<button data-testid="button-agree" type="button" class="scmp-btn scmp-btn--default w-button--footer sm:scmp-ml-sm md:scmp-ml-md lg:scmp-ml-dialog">Text</button>
пробовал подождать кнопку
const waitBtn = await page.waitForSelector('[data-testid*="button-agreer"]');
Потом нажать
const btn = await page.$('[data-testid="button-agreer"]', { clickCount: 1 })
или
const btn1 = await page.click('[data-testid="button-agreer"]', { clickCount: 1 })
精神に強い
Я понял почему не могу достучаться к элементу он находится в псевдоэлементе типо
<div data-testid=‘buttons-wrapper’>
::before
<button data-testid="button-agree" type="button" class="scmp-btn scmp-btn--default w-button--footer sm:scmp-ml-sm md:scmp-ml-md lg:scmp-ml-dialog">Text</button>
</div>
Black_Yuzia
Black_Yuzia
Или вопрос в другом 👀
Black_Yuzia
Black_Yuzia
Иногда надо подождать прямо таки кнопку
精神に強い
Так я сначала ставил waitForSelector и селектор блока выше этих кнопок который имеет ::before
Он ждал но кнопки потом не нажимал, уже тогда когда они отрисованные в дом дереве
Captain Maslori
еще около-костыльный вариант - ловить ее через mutationobserver на родителе, но мне кажется это лишнее, должно быть норм и так
Layer player
привет
только поставил puppeter,
в скриптах только учусь,
сразу же получил затык на втором шаге, кнопка "sign in" не нажимается после ввода пароля.
куда копать
Captain Maslori
Fox
Добрый вечер. Кто нибудь знает как включить эмуляцию телефона через кнопку в девтулзах (программно)? emulate не катит
Fox
ну или как получить url девтулз для страницы с самой последней версией хрома
AF
Ребят всем привет! Кто может подсказать как кликнуть в всплывающие окно системы? Сначала чтобы открыть тип ресурса, а потом выбрать пункт иллюстрации
AF
AF
Black_Yuzia
Black_Yuzia
мб и надо, в зависимости от контекста?. Но будет работать и так
AF
На маке в долфине работает селект корректно, в себя на стационаром компьютере пробую, папитир не видит половину кнопок на сайте. Может кто-то сталкивался и есть решение?
AF
User
Heinrich
Всем добрый вечер, подскажите, пожалуйста.
проблема в том что я не знаю как в браузере включить режим эмуляции телефона.
Alex*
R-lion
Всем привет, можно ли обойти как ни будь smart captcha? За помощь готов заплатить денежку!!!
Black_Yuzia
User
❓Как найти кнопку по названию самой кнопки, например, "Отправить", чтобы нажать на неё, т.к. селектор всё время меняется.
Captain Maslori
В частности, если Отправить это часть какой-то формы, с которой вы уже работаете, селектор можно же вызвать от тега form и тд, и вообще можно ходить по дереву элементов через children/parentElement. Но если кнопка просто болтается фиг пойми где то окей может быть xpath того стоит
User
Captain Maslori
Дима
User
❓Как отловить ошибку waitForResponse() если истекает timeout? Заключил в try catch, всё равно не ловит ошибку вылетает:
UnhandledPromiseRejectionWarning: TimeoutError: Timeout exceeded while waiting for event
Alhimik
Alhimik
Alhimik
Дима
Alhimik
Дима
Покажи код.
блин это жир его скидывать, ну логика такая, что открывает сайт, и делает клики по нему рандомные по ссылкам
Дима
типо беру <a></a> которые видны на странице и клацаю по ним
Alhimik
Дима
там функция в функцие
Alhimik
Ты скорей всего забыл где-то await.
Дима
vseok = false;
googling = 0;
do {
try {
await googleNew(browser, 'zapros.txt');
googling++;
vseok = true;
} catch (e) {
console.log(e);
}
} while(vseok === false || googling < 5);
Дима
бывает сайтов 10 проверит все ок, а потом вылезит, а бывает вообще не вижу, причем может быть на том же сайте
Дима