Pavel
Да, ты прав.
Pavel
waitUntil:networkilde0 решает ее
Pavel
он остался от старого кода, да.
Pavel
забавно, но с таймаутом быстрее ходит по страницам :D
Pavel
Спасиб, я вдруг понял что он на ноде. И что я могу использовать экспериментальноe апи https://chromedevtools.github.io/devtools-protocol/tot/HeadlessExperimental
1
Картинки и CSS отсекаю так, см. картинку, а как отсекать, например, счётчики посещений или статистику Яндекс? Они реально тормозят загрузку страницы.
Pavel
Вам не кажется что эту группу нужно добавить playwright или вообще QA браузерное? Лушников перешел в playwright, например.
Pavel
можно отключить скролы
1
Пример перебора прокси из файла. Вверху закреплено сообщение, там можно найти много примеров.
Gambit501
Это юзал? https://www.npmjs.com/package/puppeteer-extra-plugin-stealth
1
Подскажите, необходимо отправить снимок экрана в Телеграм через POST запрос с заголовком Content-Type: multipart/form-data, если подставлять url на файл, то отправляется, а как локальный файл не пойму. Пробовал подставлять в photo: file:// тоже не работает.
Текст отлично отправляется используя заголовок Content-Type: application/json
Alex
Dmitri нода?
1
Alex
Dmitri советую не париться, а взять уже готовую обертку https://github.com/yagop/node-telegram-bot-api
1
Alex
Кто-то кинопоиск парсил?
1
В какую сторону смотреть? Задача, при запуске несколько одинаковых скриптов, чтобы они считывали параметры из файла:
param1
param2
. . . . .
param N
Чтобы каждый скрипт не считывал тот параметр, который уже другой использует или использовал. Проблема при одновременном доступе.
Скажем при обращении к param1 ставится "*", что этот параметр сейчас используется или использовался и другой скрипт его не может использовать, но возникает проблема при одновременном обращение. Всё равно при чтении и записи есть временной интервал. Может не в файле реализовывать, а в какой-нибудь базе данных или скажем в Google Таблице?
Gambit501
Alex
Как в page.evaluate передать переменную?
Alex
Pavel
Пробрось ее в конце еще, как в setTimeout
Alex
Pavel
В body лежит наверно
Pavel
1
@munrocket. Вроде, придумал алгоритм решения задачи. При запуске любого количества экземпляров одного скрипта, они по очереди берут параметры из файла. При считывании параметра помечают его "*", тем самым другой скрипт уже игнорирует этот параметр и считывает другой. Для проверки сделал паузу в случайном порядке до 3 сек.
Андрей
Привет, ребят, можно ли в jquery или cheery сделать выборку по нескольким вариантам аттрибута?
Что-то типа $('a[title="Волки"][title="Овцы"]') ?
Андрей
Спасибо!
Андрей
Привет, ребят.
Что не так с транслированием портов и нэймингов в docker-compose сборке (в частности проблема с tor-proxy соединением)?
https://qna.habr.com/q/714443
Nikita
Господа, подскажите пожалуйста.
Запускаю в докере puppeteer. И почему-то в докере он не прогружает html страницы. т.е. не видит какие-то селекторы.
А на локалке все работает без проблем вообще
Pavel
Nikita
Pavel
Я
Попробовал puppeteer-core, вообщем не нужно. Не универсально для всех, лишних 150 мегов не помешает в devDependency.
Roman
Roman
не хромиум
Pavel
У меня под линухом не завелось, не стал заморачиваться. Так как другим тоже будут траблы потом.
Roman
я думаю многие не знают (но многие и знают), что хромиум сбилженный роботом, который тянет пптр не имеет кодеков
Roman
и 80% видео не будет грузится даже в нем
Pavel
Хмм, забавно, не в курсе был.
Pavel
Не было таких задач.
Roman
ну если шо меня тыркайте, я его весь выдрочил и я контрибьютор пупитра
Roman
могу че нить подсказать
Roman
для прикола можете сами скомипилить даже себе хромиум
Roman
если есть машина
Roman
компляция на мощном серваке около 4 часов
Roman
плюс 20 гигов исходников
Roman
единственное что я не трогал это файрфокс пддержку
Roman
+ сразу отказывайтесь от использования pipe режима, это смех
Roman
IPC через аутпут терминала и инпут
Pavel
У меня только была трабла с тэгом video, и детерминированностью скриншотов между сессиями, но удалось захукать потом. Кодеки работали.
Pavel
/* Semi-determitistic video */
let play = HTMLVideoElement.prototype.play;
HTMLVideoElement.prototype.play = async function() {
play.call( this );
this.addEventListener( 'timeupdate', () => this.pause() );
function renew() {
this.load();
play.call( this );
RAF( renew );
}
RAF( renew );
}
Roman
Roman
все равно впалят
Roman
не занимайтесь вообще таким лучше
Roman
пакостями
Roman
сек
Roman
https://browserleaks.com/canvas
Roman
а ты мне скажешь на это "хаха да кто такое будет проверять"
Roman
так вот фингерпирнт канваса давно в коде метрики
Roman
и все твои визиты будут линукс)
Roman
а юзерагент виндоус 😄
Roman
ну ты же спрасил как
Roman
я и сказал не?
Roman
наши разговоры дорого стоят
Roman
не так много экспертов по пупитру в рф)
Roman
можно решить эту проблему на самом деле
Roman
но в паблике никто не будет рассказывать
Gambit501
А как же анонимный браузер сфера? ониж как то нашли решение, да и другие браузеры есть, которые тоже меняют шрифты
Alexander
@bin2hex @satanch я работаю manual tester-ом, мне очень понравился Puppeteer, хочу автоматизировать проверку UI элементов и некоторые E2E тесты, уже написал простенькие тесты с Puppeteer-ом. Можете подсказать как дальше прокачиваться с использованием puppeteer, где можно посмотреть более advanced level примеры, а то в основном везде basic level. Извините за нубский вопрос если что.
Alexander
@bin2hex просто мне показалось что у меня слишком простые тесты: типа shouldExist - click - assert + вынес отдельно селекторы, хотел посмотреть на более сложные примеры. Окей, я понял, буду разбираться с докой и писать примеры для своего приложения.
Alexander
Подскажите как выбрать и нажать кнопку, которая содержит конкретный текст, которая спрятана в куче div-ов с динамическими классами.
DeniskaAb
А как получить атрибут onclick через селектор?
DeniskaAb
логично, не поспоришь. Как a[onclick] мне нужно функцию из атрибута как текст, как сделать через JS я знаю, а как будет просто селектором.
Андрей
Привет ребят
Как. правильно прописать proxy-server для puppeteer с ссылкой на контейнер с tor-proxy?
https://qna.habr.com/q/715353
倫太郎
倫太郎
че та много всего за раз
Alexander
@bin2hex спасибо за подсказку, вообщем реализовал это так:
1. в helpers.js вынес:
clickXPath: async function(page, xpath) {
try {
const [button] = await page.$x(xpath);
if (button) {
await button.click();
}
} catch (error) {
throw new Error(Could not click on xpath: ${xpath})
}
},
2. в самом файле тестов добавил:
const clickXPath = require('../lib/helpers').clickXPath
3. и в самом it уже передаю значения xpath:
await clickXPath(page, "//button[contains(., 'Log in')]")
Alexander
@bin2hex тут нашел https://stackoverflow.com/questions/47407791/puppeteer-click-on-element-with-text у меня сработало
Alexander
@bin2hex окей, спасибо, пойду дальше разбираться.