LINUX.ORG.RU

Связь браузера с локальной системой

 , , ,


0

2

Нужен канал связи между js рантаймом страницы и локальной системой. Фраза для поиска в гугле тоже пойдёт. Единственное что придумал - мониторить localstorage.
Мб есть какие-то кастомные сборки, которые позволяют делать дела прямо из js кода?

Ответ на: комментарий от eternal_sorrow

Ну puppettier это то же самое что selenium, но исключительно для ноды.

Да не… - это гораздо более продвинутая штука по сравнению с Selenium. И гораздо более быстрая, поскольку с Selenium ты работаешь по HTTP, потом еще в цепочке еще идет ChromeDriver, который уже взаимодействует с Chrome по DevTools-протоколу. Возможности Selinium - весьма убогие

vinvlad ★★
()
Ответ на: комментарий от crutch_master

Селень - это не совсем то, она чтобы тестить сайт, а мне надо тестить юзера.

А какой смысл тестить юзера, работающего с обозревателем, запуская что-то на его же компе?) Немного странная задача) Он что - позволит такое сделать?

vinvlad ★★
()
Ответ на: комментарий от eternal_sorrow

… не вижу ни одного аргумента в пользу этих утверждений

А самому глянуть? Тем более, что здесь прозвучало магическое «DevTools-протокол.»

Selenium - это https://www.w3.org/TR/webdriver2/
Принципы взаимодействия и функциональные возможности протоколов разные.

vinvlad ★★
()
Ответ на: комментарий от vinvlad

Тем более, что здесь прозвучало магическое «DevTools-протокол.»

Селениум умеет всё что умеет DevTools-протокол. Но базовые API заточены под кроссбраузерность. Не все браузеры умеют в CDP.

eternal_sorrow ★★★★★
()
Ответ на: комментарий от eternal_sorrow

Селениум умеет всё что умеет DevTools-протокол. Но базовые API заточены под кроссбраузерность…

Это вы на основании чего так решили? Вот я выше привел ссылочку на конкретный API-метод, который есть в Puppetter и Playwright. Найдите такое же в Selenium - именно такое же по возможностям, а не просто чем-то где-то напоминающее.

vinvlad ★★
()
Ответ на: комментарий от vinvlad

https://pptr.dev/api/puppeteer.page.exposefunction

Это?

https://www.selenium.dev/documentation/webdriver/interactions/windows/#execute-script

именно такое же по возможностям, а не просто чем-то где-то напоминающее.

С таким требованиями ты идёшь подальше. Из за того что селениум работает не только (и не столько) с js, то передать функцию напрямую из одного рантайма в другой не получится. Но выполнить асинхронный скрипт и дождаться коллбека из браузера - вполне возможно.

eternal_sorrow ★★★★★
()
Последнее исправление: eternal_sorrow (всего исправлений: 1)
Ответ на: комментарий от eternal_sorrow

С таким требованиями ты идёшь подальше

Извини, но мы здесь обсуждаем возможности тулзов с учетом требований TC-а. Так что, «подальше идешь» ты ))

Ну ты же сам понимаешь, что HTTP-доступ не позволяет мгновенно и относительно независимо инициировать действие в клиенте при возникновении какого-либо события в DOM. Это и есть существенное ограничение WebDriver-протокола. Для тестирования это может и не очень существенно, но есть задачи, где это является принципиально важным моментом.

vinvlad ★★
()
Последнее исправление: vinvlad (всего исправлений: 1)
Ответ на: комментарий от vinvlad

Извини, но мы здесь обсуждаем возможности тулзов с учетом требований TC-а.

Ни один из обсуждаемых инструментов не подходит для задач ТСа, так что его требования нерелевантны.

eternal_sorrow ★★★★★
()
Ответ на: комментарий от eternal_sorrow

HTTP-доступ

А DevTools protocol поверх чего по твоему работает?

Почитай - и больше не задавай таких «ленивых» вопросов:
https://github.com/aslushnikov/getting-started-with-cdp/blob/master/README.md

Ни один из обсуждаемых инструментов не подходит для задач ТСа

Ну это нам TC в конечном итоге ответит. Лично мне пришлось решать задачи, где Selenium ну никак бы не пригодился, поскольку нужно было иметь обработчики событий DOM-а на стороне клиента.

vinvlad ★★
()

масса разных нерабочих способов. Аналогичная проблематика появляется в PWA: как расширить чем-то более хитрым.

Нет, всё это по сути заканчивается очень просто: ты поднимаешь на локалхосте веб-сервер и ходишь к нему по http.

Просто, надежно, портабельно. Работает на десктопе, в мобиле, везде.

И так делают все, у кого всё уже доделано, запущено и приносит пользу людям.

max_lapshin ★★★★★
()

Можно обращаться по http на 127.0.0.1. Например, в OpenStreetMap была кнопка «редактировать карту в локальном редакторе», она делала обращение на 127.0.0.1:чтото, а там слушал редактор и при поступлении запроса грузил нужный кусок карты и получал фокус.

anonymous
()