helg wrote: кажется я понимаю как написать плагин, который такое сделает.
это интересно ...
у меня, правда, созрел альтернативный подход по части “написать“: отправить создателям сайта (правда, это крутые ребята в крутой компании, не думаю, что они читают письма восхищенных юзеров) что-нибудь восторженно-обожательное, типа “блин, какого хрена у вас нет кнопки “save configuration", вот только не знаю какую формулу вежливости поставить в конце письма.
а вообще ... почитал я советы ваши ... крутые вы программисты, ребята. Вы друг-друга понимаете, когда общаетесь? По мне так это надо компьютером быть, чтоб понять. Словом, как всегда, ничего не понял, но, как всегда восхищен.
(на самом деле в общих чертах понял, что речь идет о некоем скрипте, который будет на моём компе (или на моём сервере) собирать в единую команду всё то, что я делаю, поэтапно выбирая нужные строчки и кнопочки, а потом пошлет всё это подальше единым запросом (автоматизированной серией запросов) и у обсуждаемого сайта не будет иного выхода, кроме как показать всё как заказано)
geek7 wrote: по последней кнопке тот отправляет серверу курьера (запрос) вот его можно перехватить и сделать дубль (как у АиБ С-х) и посылать этого дубля каждый раз как понадобится воспроизвести тот-же эффект
включаешь дебагер/wireshark ловишь запрос и сохраняешь у себя типо Когда надо повторить то postman посылаешь повторно Чо там какие-то мучения я это проделываю по десять раз на день как акробат под куполом в нашем цирке.
"A patriot must always be ready to defend his country against his government." Edward Abbey
Leonid_V wrote:правильно ли я понимаю, что на русский это переводится как “дело труба“?
Увы, да. Но задачка интересная: кажется я понимаю как написать плагин, который такое сделает.
Надо смотреть на http(s) траффик, как гик рекомендует, есть шанс, что выбор каждого из элементов списка генерирует определенный запрос и их последовательность можно как то склеить. Но даже если это заработает, то в случае если данные (ака списки) как то изменятся - все может развалиться.
В 20 веке веб-приложения типа: вы нам входные данные, мы в ответ результат - работали просто. Рисовалась страничка содержащая HTML-форму, в поля формы пользователь вводил данные - и нажимал кнопку "НуДавайЖе!". При нажатии браузер своим стандартным методом посылал эти данные на сервер, вытаскивал ответ сервера в виде новой HTML-странички - и показывал эту страничку заместо той, где форма была.
С тех пор принцип работы несколько поменялся.
- Зачем всякий раз вытаскивать с сервера всю HTML-страничку, если новая - почти как текущая? Получим от сервера только новые данные - и заменим то, что сейчас нарисовано. С некоторых пор стало возможным браузеру обмениваться данными с сервером не переходя на новую страничку. Магическое слово тут - XMLHttpRequest.
- Зачем всякий раз искать кнопку "НуДавайЖе!" - лучше при всяком изменении данных формы посылать текущее содержание формы на сервер - и получать пересчитанные данные. Это делает не простой HTML, а программа на языке JavaScript, загруженная с сервера вместе с HTML-страничкой. Полулярная библиотека для подобных манипуляций - JQuery, которая тут используется.
- Зачем серверу передавать полный текст странички со всеми HTML-элементами? Всем надо прописывать примерно одинаковый набор атрибутов, обрабатывать примерно одинаковые события от мышки-клавиатуы и реагировать на них. Давайте передадим браузеру вместе со страничкой программу, которая HTML/DOM, определяющий эти элементы, создаст прямо в браузере, после загрузки. Отличительные параметры на каждый элемент передавать всяко быстрее, чем полное описание для каждого элемента в отдельности.
- Зачем получать с сервера большую картинку с данными, нагружая его рисованием? Сервер один, а вас много. Получим набор цифр от сервера - и нарисуем график по ним прямо в браузере. В данном случае эти действия производятся библиотекой d3.js.
- Зачем все параметры передавать на сервер, а потом их же получать с сервера для рисования графика? Параметры у нас уже есть в браузере, будем их использовать.
Программа работает быстро. Но теперь.
- У формы нету кнопки "НуДавайЖе!" а вместе с ней и явно прописанного адреса, куда посылать данные формы.
- Формы как таковой на страничке нет - она же динамически создается при загрузке. Анализатор HTML-кода, пытающийся понять в какие поля вбивать сохранённые данные, этих полей не видит
- Если разобраться с вышеперечесленным, возникает ещё проблема. Послали на сервер данные, получили табличку, по которой рисовать график. Это не HTML, который дал браузеру - он нарисует. Это столбцы данных для программы на страничке, использующей библиотеку d3.js. Чтобы получить график, надо передать эти данные аккурат ей же.
Суммируя. Что не будет работать:
1. Найти кнопку "НуДавайЖе!" и отправить те же данные на тот же сервер, но со своей странички. Нету у него кнопки, Ури.
2. Найти программой все поля форму в загруженном HTML и выстаить из в нужные значения. Нету полей в загружененом HTML.
3. Проэмулировать запросы на сервер программой-прокси, что находится между браузером и сервером - и получить данные браузером. Дело в том, что часть данных для графика никогда до сервера не доходит. Она получается из полей в браузере и программой в браузере же и используется. Программа-прокси не получает этих данных - и не может передать их браузеру, когда эмулирует от него запрос.
После этого становится понятно как сделать, чтобы работало. Но писать это, увы, муторно.
Last edited by helg on 20 Jul 2016 15:58, edited 1 time in total.
Sergunka wrote:включаешь дебагер/wireshark ловишь запрос и сохраняешь у себя типо Когда надо повторить то postman посылаешь повторно Чо там какие-то мучения я это проделываю по десять раз на день как акробат под куполом в нашем цирке.
Дык задача не себе сохранить, а собрать это все в некий контейнер, который можно отправить другому человеку по мылу и там у него этот контейнер воспроизведет конечный результат.
geek7 wrote:
так для этго вам сам ДОМ не нужен, а только тот кто из него выйдет.. обычно, насколько хитрыми бы нибыли манипуляции с ДОМ-ом в браузере, по последней кнопке тот отправляет серверу курьера (запрос) вот его можно перехватить и сделать дубль (как у АиБ С-х) и посылать этого дубля каждый раз как понадобится воспроизвести тот-же эффект
правильно ли, мы с ёшкиным котом поняли, что надежды юношей еще немножечко питают?
да, ключевые слова debugging proxy. конкретно можно поставить Fiddler
Говори что думаешь, думай что говоришь!
Маразм крепчал и скрепы гнулись
geek7 wrote: да, ключевые слова debugging proxy. конкретно можно поставить Fiddler
Вы на сайт-то смотрели?
1. Идём по ссылке FireFox'ом
2. В FFох нажимаем F12. В открывшейся панели выбираем табу "network". Все запросы к серверу и ответы от него будут отображаться в этой табе.
3. Меняем параметры спектра в форме. Видим, что картинка меняется при изменении любого параметра формы. А обмен данных с сервером происходит не при всяком изменении.
Рroxy стоит между клиентом и сервером. Proxy не может получать доступ к данным, которые не гуляют между клиентом и сервером. Поскольку изменение графика не всегда сопровождается обменом данными между клиентом и сервером, у proxy нет полной информации какие параметры поставил клиент, proxy не знает какой клиент видит график. Следовательно, proxy не может решить поставленной задачи.
Last edited by helg on 20 Jul 2016 17:17, edited 1 time in total.
helg wrote:Давайте подробнее объясню в чём особенность.
В 20 веке веб-приложения типа
...
3. Проэмулировать запросы на сервер программой-прокси, что находится между браузером и сервером - и получить данные браузером. Дело в том, что часть данных для графика никогда до сервера не доходит. Она получается из полей в браузере и программой в браузере же и используется. Программа-прокси не получает этих данных - и не может передать их браузеру, когда эмулирует от него запрос.
После этого становится понятно как сделать, чтобы работало. Но писать это, увы, муторно.
если цель - не на сервер отправить то, что браузер посылал при работе с ним "вручную", а в браузере поиметь нужный стейт ДОМа - тоже есть тривиальный способ
вот конкретно для хрома http://stackoverflow.com/questions/4498 ... y-html-dom" onclick="window.open(this.href);return false;
Говори что думаешь, думай что говоришь!
Маразм крепчал и скрепы гнулись
geek7 wrote: да, ключевые слова debugging proxy. конкретно можно поставить Fiddler
Вы на сайт-то смотрели?
да, не разобрался в чём цель много контролов - думал навыбираеш правильно, а потом таки появится что-то типа [заказать]. недошло, что всё чтобы полюбоватся на красивые графики.. ну так там в дисплей опшенз есть экспорт.. да и принтскрин никто не отменял
Говори что думаешь, думай что говоришь!
Маразм крепчал и скрепы гнулись
Leonid_V wrote:отправить создателям сайта (правда, это крутые ребята в крутой компании, не думаю, что они читают письма восхищенных юзеров) что-нибудь восторженно-обожательное, типа “блин, какого хрена у вас нет кнопки “save configuration"
На той стороне это сильно проще сделать. Save, пожалуй, не самый удобный метод. Среди ручек на страничке - 22 чекбокса, 2 текстовых поля малой длины и 10 списков. Стандартный подход - закодировать все эти параметры в строку и добавлять её JavaScript'ом динамически в хвост URL после символа '#' всякий раз при изменении параметров, а при загрузке странички парсировать эту строку из URL тем же JavaScript'ом, и давать нужные команды элементам формы. Приграммисты поймут почему '#', впрочем, это сейчас стандарт для SPA state preserving.
При этом никаких "Save" ни других дополнительных элементов интерфейса не добавляется. Зато в любой момент можно букмаркнуть URL а адресной строке, послать коллеге - и будет работать. Реализовать это легче чем уже реализованный ими экспорт в PNG-картинку. А выгоды им от такого - больше, чем от PNG: за график посмотреть народ полезет к ним на сайт, а не на свой диск, а это дополнительная реклама и паблисити - ровно для этого они свою рисовалку графиков и выложили.
Так что, если поблагодарить-попросить-объяснить - полагаю, сделают
Мальчик-Одуванчик wrote:А если подпихнуть под это дело селениум со скриптом, который нажмет нужные кнопочки и заполнит поля
потом отдельно послать этот скрипт студенту.
Главное, чтобы скрипт мог обновляться в зависимости от того, что выберет ТС. А то руками там непросто набивать...
Вопрос: как web browser отмечает (за кулисами), что я выбрал такой-то элемент? Можно ли выцепить эту информацию?
Цепляешь к FF плагин от селениума и включаешь режим записи при работе с сайтом. На выходе - скрипт, который имеет смысл проиграть чтобы удостовериться в правильности его работы.