Назар
Ребят, есть на странице блок с кнопкой, типа принять куки. И в принципе я не знаю когда он вылезет. Как правильней детектить его появления и останавливать на время скрипт, пока я нажимаю на кнопку в блоке?
Unknown
кек, как это так, не знаете когда вылезет?
Unknown
так же можно посмотреть, что изменяется когда вы его применяете (мб там в session storage сетается, или у cookies) и делать это при старте вашего браузера/тесты.
Тем самым избавитесь от лишнего клика.
Vlad Vaviloff
Или просто убирать его после открытия страницы.
Suicide Liza
может ктото знает как можно получить parent element ? с page.$$ ?
Suicide Liza
const child = page.$(select)
cont parent = child.$(?)
Eugene
Ребят, привет. Кто-то в курсе можно ли в headless режиме работать с webrtc?
Назар
вот есть такой код. Через evaluate работает, а тот что комментом нет. Они идентичны или нет?
isa
Hi can i ask question about puppeteer with latin character cuz i cant write ur alphabet :/
John
кто то с таким сталкивался?
https://qna.habr.com/q/884139
John
хотелось бы запустить браузер и через апи создавать странички и обрабатывать их, а не запускать браузер вновь и вновь
Egor
John
наверное не верно объяснил
хочется чтобы при обращении через express не открывался новый экземпляр браузера, а оставался тот же, сейчас вот так работает
John
John
единожды запустил и открывай закрывай себе странички
John
решил таким путём
единожды запускается экземпляр хромиума с флагом --remote-debugging-port=порт
далее подключаемся к браузеру и делаем нужное
надо будет затестить как поведет себя когда много параллельных запросов будет, хотя наверное забью и так оставлю :)
зато не будет больше постоянно перезаходить на сайт, скорее всего пропишу обновление странички, чтобы поддерживало соединение и не выкидывал с сайта по таймауту
Sasha
Иногда все же придется рестартить) сожрет всю память
Unknown
John
когда не дают апи, а данные нужно получать или вносить, приходится пользоваться тем что есть.. а еще там гост браузеры и сертификаты, поэтому иначе никак, ну или я не придумал
потом экспрессом уже пишешь своё апи и загоняешь или получаешь данные с сайта
1
Подскажите, как сделать скриншот элемента, чтобы осталась открытая страница. При выполнении:
const el = await page.$('#Image');
el.screenshot({ path: 'img.png'});
в браузере открывается данный элемент, а нужно оставаться на странице, где этот элемент находится.
Vlad Vaviloff
1
Подскажите, после нажатия кнопки всплывает dialog после чего скрипт замирает и не получается нажать кнопку "ОК" вот так:
await page.on('dialog', async dialog => {
await dialog.accept();
});
Пока вручную не нажмёшь "ОК" скрипт не проходит дальше, т.е. ожидает нажатия кнопки и только после этого выполняется код нажатия кнопки.
Andrey
await перед page.on убери для начала
Andrey
больше кода, не понятно как и что ты делаешь кроме этого
Andrey
тут ты просто Event назначаем
Andrey
dialog вообще браузерный всплывает?
1
больше кода, не понятно как и что ты делаешь кроме этого
Код следующий:
console.log('Press Submit');
await page.click('#submitbuttonId');
// Тут замираем, дальше не идём
console.log('Press Ok dialog');
page.on('dialog', async dialog => {
console.log('Dialog inside');
await dialog.accept();
});
dialog браузерный
Andrey
перенеси вверх page.on
Andrey
это ты назначаешь обработчик Event'а
Andrey
а не код последовательный выполняешь
Sasha
Видимо последовательно. Раз сообщение об успехе
Andrey
т.е. у тебя выполняется так:
1. кликаешь кнопку
2. Появляется диалог
3. Выставляешь для диалога обработчик
Andrey
да, в самое начало
Andrey
можешь прям после создания page
Andrey
👍
isa
sure man, go ahead 😄
Haha thnx can i prevent json stringify when im sending object to exposefunction. But its getting args as serialized.
Sasha
Доброго дня. В headless режиме не создается localstate это норма?
Victor
Hi everyone
Victor
Need a little help here
Victor
Victor
been trying to get the message of the alert pop up
Victor
but the return always objec
Victor
isa
U can log only message object without any string then check which key is important for you...
isa
Console.lot("diyalog message"+ message[key])
Victor
isa
Console.log(message)
isa
Can u try it?
isa
Send ss
Victor
Victor
yeah, i get this
isa
No dont use string. Js is joining string + object... İts wrong. U should join same type in console.log
isa
Or console.log("diyalog message", message)
Victor
Victor
i get this response
Victor
isa
i didnt read puppeteer documantion about dialog. U can read documantion which props or func is useful for you. i think u wanna get text message of dialog. Am o right?
isa
am i right?
Victor
Victor
I have tried it before here
Victor
Victor
And it work perfectly fine
Victor
But when i changed it to this, it returns object
isa
Because await convert to async func dialog.message
isa
U can read message with await keyword or then ().catch block
Victor
checkLoginProblem: async () => {
try {
let message = await page.on('dialog', async dialog => {
let dialogMessage = await dialog.message();
await dialog.dismiss();
return dialogMessage
})
// message = JSON.stringify(message)
console.log(message);
if (message == null) {
return false
} return message
} catch (e) {
console.log(e.message)
}
},
Victor
a little bit help maybe? 🙏
isa
Can u remove await keyword from ley dialogmessage =await dialog.message()
Victor
isa
Await is converting to promise ur value
Victor
isa
No u can read data with using again await message or message.then()
isa
Ur returned value is promise
isa
Not string
Victor
okay, im super confused 😂
isa
Haha maybe i can not explain with my bad language haha