Название: QWebView и JavaScript Отправлено: Bepec от Сентябрь 27, 2011, 15:31 Приветствую всех. Решил изучить JavaScript, в частности для заполнения многочисленных форм на многочисленных сайтах. Конечно же необходима авторизация.
Использую QWebView. Попробовал сам - вроде получается, но есть 1 закавыка - никак не могу понять, как вызвать нажатие кнопки. Пробовал 3 варианта: 1) Вычислять координаты элемента и отправлять нажатие в форму. 2) Пытался вызвать скрипт, который уже есть на странице, который собственно проверяет и отправляет данные(пока безуспешно). 3) Пытался внедрить свой скрипт, который в свою очередь вызовет событие нажатия кнопки. 4) Нажать кнопку скриптом. 1 вариант не нравится - не элегантно, но работает. Прошу помощи поправить - что у меня не так: Основной код tst.cpp Код: /* tst.h Код: // пытаюсь нажать кнопку Код: // пытаюсь вызвать функцию которую посылает форма (функция уже есть в странице) Код: // попытка вставить свой собственный скрипт ( автоматическая отправка формы через 5 секунд) Попытка найти саму форму тоже провалилась с треском. Подскажите хотя бы направление куда рыть. PS сайт указанный в QWebView является моим. Собственно на нем и тренируюсь. Появилась идея, что все вызовы должны происходить в другом Frame, а не в основном. Прав ли я? буду проверять. Название: Re: QWebView и JavaScript Отправлено: SimpleSunny от Сентябрь 27, 2011, 15:37 Что первично изучение JS или заполнение форм на сайтах?
Название: Re: QWebView и JavaScript Отправлено: Bepec от Сентябрь 27, 2011, 15:46 Первично сначала решить данную задачу. Скажем так - дать толчок к последующему изучению.
Изучать весь язык в намерениях нет, есть только желание изучить его прикладуню часть, оформление, интерактивный интерфейс. Возможно последующая работа с БД. А далее, уже в прикладных задачах и изучение всего языка подтянется. PS да и порывшись на форуме, я нашел только 3-5 тем с таким вопросом, но блуждающими ответами :) Хотелось бы еще и заваять эту тему для других, а так же впоследствии прикрепить сюда свой примерчик с пояснениями. Название: Re: QWebView и JavaScript Отправлено: SimpleSunny от Сентябрь 28, 2011, 10:44 Просто задача заполнение формочек на разных сайтах решается проще, без привлечения QWebView и JavaScript.
Снифером смотрим, что отправляется на сервер, и такой же запрос отправляем руками через QNetworkAccessManager. Название: Re: QWebView и JavaScript Отправлено: Bepec от Сентябрь 28, 2011, 13:07 Проблема в том что сайты могут менятся, названия и прочие id тоже не останутся неизменными. Задача же стоит написать гибкую программу, а не с конкретными сайтами,
которую можно перенастроить при помощи пользовательского интерфейса. С QNetworkAccessManager не работал, пара вопросов: 1) Запрос имеется в виду пакет данных? 2) Какой снифер посоветуете? (сотни скачать могу, но лучше проверенные и эргономичные программы) 3) Имеется ли возможность будет на лету править пакет в нем, с целью настройки на новый сайт и новую форму? Название: Re: QWebView и JavaScript Отправлено: SimpleSunny от Сентябрь 28, 2011, 13:55 2. Использую дополнение к ФФ FireBug и\или Wireshark, доступен под win\lin.
1,3 Не совсем понял понял про пакет данных, но запрос выглядит как-то так Код
Название: Re: QWebView и JavaScript Отправлено: Bepec от Сентябрь 28, 2011, 13:57 Благодарю, завтра попробую, сегодня уж забился по самое нехочу. Благодарю за отклик.
to all: если есть еще предложения по JavaScript'у, пишите :) Название: Re: QWebView и JavaScript Отправлено: Bepec от Октябрь 03, 2011, 12:03 up!
Обновление вопроса. Как все же с помощью жабаСкрипта нажать на кнопку? PS название темы совпадает, новую создавать, твинков плодить. Название: Re: QWebView и JavaScript Отправлено: _OLEGator_ от Октябрь 03, 2011, 15:10 Серьезно чтоли?
Вызвать click() у кнопки с помощью JavaScript Название: Re: QWebView и JavaScript Отправлено: Bepec от Октябрь 04, 2011, 07:12 Я в курсе что вызвать click() у кнопки с помощью JavaScript, НО:
1) кнопка находится в форме, событие click у нее не обрабатывается( хз почему, но находится по id, вызывается click() и... тишина) 2) меня интересует не отдельный вопрос по жабе, а - смотри название темы. Как это сделать в QWebView с помощью жабы. 3) вызов у кнопки submit не увенчался успехом. (а тип у нее submit) 4) попытка вызова Jaba функции отправки формы (которая уже имеется на странице) не увенчалась успехом тоже. 5 - пожалуйста, прежде чем писать простые ответы, хотя бы прочитайте тему и собственно вопрос. to SimpleSunny: Благодарю за направление, авторизируется, разбираюсь сейчас с тем, как подружить его с QWebView. Ну или хотя бы использовать его в отображении ^^ И к сожалению он не подходит для заполнения формочек - нужна гибкость в настройке на любую форму, что вполне можно реализовать JavaScript'oм. А его настройка требует снифера и хотя бы малого умения им пользоваться (не для себя программу пишу, мне б и такого хватило :) ) Название: Re: QWebView и JavaScript Отправлено: _OLEGator_ от Октябрь 04, 2011, 09:48 Я такое уже делал (автозаполнение форм регистрации на форумах).
Скинул бы минимальный проект с проблемой, я бы глянул вечерком. Название: Re: QWebView и JavaScript Отправлено: Bepec от Октябрь 04, 2011, 10:07 В принципе минимальный проект доступен в теме :)
В JavaScript'e я новичек. Единственное что мне непонятно - как в QWebView поймать кнопку и что ей послать чтобы она нажалась :) Код: button = ui.webView->page()->mainFrame()->findFirstElement("input[type=submit]"); почему то не проходит. :) Был бы рад самому простому примеру с нажатием в QWebView кнопки, находящейся в форме (обычные нажимаются без проблема.) PS еще сегодня по 2 разу попробую. Название: Re: QWebView и JavaScript Отправлено: _OLEGator_ от Октябрь 04, 2011, 11:11 Вот рабочий пример:
Код
Название: Re: QWebView и JavaScript Отправлено: Bepec от Октябрь 04, 2011, 13:53 Olegator в том то и закавыка что в форме у кнопки не определено действие. обработчик в форме находится...
Код: <div class="block"> вот сама кнопка - выдрано из предыдущего кода Код: <td align="right" valign="top"> PS если передавать click(), то ничего не происходит. Update: добавился вопрос - как нажать кнопку если у нее нет обработчика? :) Название: Re: QWebView и JavaScript Отправлено: _OLEGator_ от Октябрь 04, 2011, 14:25 Bepec, а ты мой код пробовал компилять и запускать?!
Здесь не важно, определен ли обработчик клика у кнопки или нет. Я это сделал чтобы просмотреть что клик программно прошел. Вся разница в том, что надо вместо Код использовать Код
Название: Re: QWebView и JavaScript Отправлено: Bepec от Октябрь 04, 2011, 14:38 Чух чух чух - заработал мой компилятор :)
Заработало, спасибо. Извиняюсь за недостойный свой ответ - был увлечен учебником по жабаскрипту, не скомпилировал(да и this. не сразу заметил) :) Благодарю за урок по JavaScript'u - и тему видимо можно закрывать :) Большое спасибо откликнувшимся, и да - сначало надо было начинать изучать, прежде чем спрашивать. Теперь понял ошибку. |