Labview+Google Chrome
-
- developer
- Сообщения: 289
- Зарегистрирован: 26 фев 2016, 06:31
- Версия LabVIEW: 18-20
- Благодарил (а): 6 раз
- Поблагодарили: 7 раз
- Контактная информация:
Re: Labview+Google Chrome
1) Если можно то VI -шку сделайте плиз.
2) А в случае кликов нет примера? В этом варианте кстати окно должно быть открыто всегда? Vision кстати стоит.
3) Где искать литературу по HTTP, а то функции описаны, а что на вход подавать непонятно в каком виде.
4) На питоне например клик по кнопкам делается вроде просто - смотришь код страницы, ищешь описание кнопки и вперед. А тут что-то очень мудрено.
2) А в случае кликов нет примера? В этом варианте кстати окно должно быть открыто всегда? Vision кстати стоит.
3) Где искать литературу по HTTP, а то функции описаны, а что на вход подавать непонятно в каком виде.
4) На питоне например клик по кнопкам делается вроде просто - смотришь код страницы, ищешь описание кнопки и вперед. А тут что-то очень мудрено.
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: Labview+Google Chrome
Ок. Но не обещаю, что на 100% будет работать. У меня почему-то через раз логинилась.rushonda писал(а):1) Если можно то VI -шку сделайте плиз.
Setting Cursor Position Programmatically With LabVIEW2) А в случае кликов нет примера? В этом варианте кстати окно должно быть открыто всегда?
How Can I Programmatically Simulate A Mouse Click?
Конечно, должно быть открыто, пока выполняются клики или снятие изображения для поиска кнопки или ещё что-то, связанное с этим. Когда окно по алгоритму уже не нужно, его можно закрыть.
Вам должны быть интересны только два вида запросов - GET и POST. Остальное в данной задаче не понадобится. Почитайте про эти запросы на вики или наберите в гугле - инфы достаточно. Параметры: для GET адрес сайта (сервера), для POST адрес сайта (сервера) и отсылаемый на сервер параметр (параметры) (в это одна переменная - строка - содержащая ряд параметров, разделяемых &). Для просмотра запросов, отправляемых браузером на сервер и получаемых с сервера, можно установить сниффер, например плагин для Лисы Live Http Headers или отдельный софт Fiddler или Charles. Сниффер всегда помогает в составлении верных запросов.rushonda писал(а):3) Где искать литературу по HTTP, а то функции описаны, а что на вход подавать непонятно в каком виде.
Очевидно, для Питона существует фреймворк, облегчающий задачу парсинга веб-контента. Не знаю, существуют ли подобные тулкиты под , специально не искал. Но, к примеру, в Дельфях есть аналогичные HTTP-клиенты - Indy или Synapse. Работа с ними почти ничем не отличается от того, что приходится делать в . Мне приходилось писать простенькие тулзы для конкретных сайтов. Запросы и парсинг - классика.rushonda писал(а):4) На питоне например клик по кнопкам делается вроде просто - смотришь код страницы, ищешь описание кнопки и вперед. А тут что-то очень мудрено.
-
- developer
- Сообщения: 289
- Зарегистрирован: 26 фев 2016, 06:31
- Версия LabVIEW: 18-20
- Благодарил (а): 6 раз
- Поблагодарили: 7 раз
- Контактная информация:
Re: Labview+Google Chrome
Ок, спасибо. Плагин поставил.
Если окно нужно держать постоянно открытым, то лучше все-таки сделать через GET и POST.
Если окно нужно держать постоянно открытым, то лучше все-таки сделать через GET и POST.
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: Labview+Google Chrome
Код: Выделить всё
HTTP/1.1 302 Moved Temporarily
Location: http://www.ni.com/ru-ru.html
Код: Выделить всё
<html><head><title>302 Moved Temporarily</title></head>
<body bgcolor="#FFFFFF">
<p>This document you requested has moved temporarily.</p>
<p>It's now at <a href="http://www.ni.com/ru-ru.html">http://www.ni.com/ru-ru.html</a>.</p>
</body></html>
Код: Выделить всё
http://www.ni.com/myni/dashboard/ru/
-
- developer
- Сообщения: 289
- Зарегистрирован: 26 фев 2016, 06:31
- Версия LabVIEW: 18-20
- Благодарил (а): 6 раз
- Поблагодарили: 7 раз
- Контактная информация:
Re: Labview+Google Chrome
О, спасибо.
Вроде принцип становится понятен - запрос-ответ - поиск инфы в теле ответа. Но вопросы все же остались и они кажется простые:
1) есть такой запрос как вы составили:
LoginForm:processLoginFlag=&LoginForm:email=
&LoginForm:password=
&recovery_appcode=HEADER_LOGIN&recovery_instance=US&recovery_scheduleCode=&recovery_du=http://www.ni.com/ru-ru.html&LoginForm_ ... ViewState=
&LoginForm:_idcl=LoginForm:continue
и др.
Как составлять сам запрос в POST - откуда брать инфу и в каком виде составлять?
2) ну и как составить запрос например клик по вкладке ИННОВАЦИИ и вбить строку в ПОИСК на этом сайте - в принципе вопрос аналогичен 1, но может как пример поможет быстрее разобраться. Заранее спасибо
Вроде принцип становится понятен - запрос-ответ - поиск инфы в теле ответа. Но вопросы все же остались и они кажется простые:
1) есть такой запрос как вы составили:
LoginForm:processLoginFlag=&LoginForm:email=
&LoginForm:password=
&recovery_appcode=HEADER_LOGIN&recovery_instance=US&recovery_scheduleCode=&recovery_du=http://www.ni.com/ru-ru.html&LoginForm_ ... ViewState=
&LoginForm:_idcl=LoginForm:continue
и др.
Как составлять сам запрос в POST - откуда брать инфу и в каком виде составлять?
2) ну и как составить запрос например клик по вкладке ИННОВАЦИИ и вбить строку в ПОИСК на этом сайте - в принципе вопрос аналогичен 1, но может как пример поможет быстрее разобраться. Заранее спасибо
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: Labview+Google Chrome
rushonda, ответ на оба вопроса:
- открываете начальную страницу сайта, открываете окно сниффера, чистите лог (если там что-то есть), выполняете какое-то одно действие на сайте, смотрите запросы в логе сниффера, воспроизводите запрос в программе.
Все параметры берутся из сниффера. Для GET достаточно посмотреть адрес, по которому обращаться. Для POST кроме адреса нужно посмотреть передаваемые параметры. Они идут в конце запроса, после заголовков. Обычно в сниффере самый первый запрос - тот, что нужен. Дальше идёт уже подгрузка различных модулей, скриптов, шаблонов, стилей и т.п.
- открываете начальную страницу сайта, открываете окно сниффера, чистите лог (если там что-то есть), выполняете какое-то одно действие на сайте, смотрите запросы в логе сниффера, воспроизводите запрос в программе.
Все параметры берутся из сниффера. Для GET достаточно посмотреть адрес, по которому обращаться. Для POST кроме адреса нужно посмотреть передаваемые параметры. Они идут в конце запроса, после заголовков. Обычно в сниффере самый первый запрос - тот, что нужен. Дальше идёт уже подгрузка различных модулей, скриптов, шаблонов, стилей и т.п.
-
- developer
- Сообщения: 289
- Зарегистрирован: 26 фев 2016, 06:31
- Версия LabVIEW: 18-20
- Благодарил (а): 6 раз
- Поблагодарили: 7 раз
- Контактная информация:
Re: Labview+Google Chrome
dadreamer, вы писали про вариант с кликером + vision... можно кратко как это сделать? (как изображение считать и соответственно кликнуть?)
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: Labview+Google Chrome
Ну, я уже в этой теме писал, что нужно снять скриншот окна браузера, найти на картинке кнопку по её изображению, навести курсор мыши на центр кнопки и сэмулировать клик. В принципе, ничего архисложного, работа на день-два. Для съёмки скриншота окна можете взять мой SubVI - Get Image By HWND. Вам потребуется найти хэндл окна (HWND). Если будете использовать отдельный браузер, то поможет функция FindWindow (рекомендую указывать также класс окна для более надёжной работы). Если же собираетесь использовать WebBrowser, то можно попробовать GetTopWindow с хэндлом основного . Далее, поиск кнопки реализуется через инструменты VDM для поиска цветного шаблона - IMAQ Match Color Pattern VI и сопутствующие (см. встроенную справку и примеры к Vision). Перемещение курсора мыши и программный клик выполняются через функции WinAPI, я уже приводил ссылки на примеры в этой теме.rushonda писал(а):dadreamer, вы писали про вариант с кликером + vision... можно кратко как это сделать? (как изображение считать и соответственно кликнуть?)
-
- developer
- Сообщения: 289
- Зарегистрирован: 26 фев 2016, 06:31
- Версия LabVIEW: 18-20
- Благодарил (а): 6 раз
- Поблагодарили: 7 раз
- Контактная информация:
Re: Labview+Google Chrome
dadreamer, Остались некоторые вопросы.
1)Скрин я сделал - с библиотекой vision работал, клик мышкой тоже ясно.
2) Вам потребуется найти хэндл окна (HWND) - Get Image By HWND. - это и есть хэндл окна?
3) Отдельный браузер это только Internet Explorer?
4) рекомендую указывать также класс окна для более надёжной работы - что за класс?
5) Не очень удобно искать кнопки, не проще ли просто по координатам щелкать? (нельзя ли привязать как-то клик не к экрану а к labview-шной программе).
6) Вы ранее отвечали, что программа должна быть открыта - в свернутом режиме не получится т.е. (уточняю на всякий случай)?
1)Скрин я сделал - с библиотекой vision работал, клик мышкой тоже ясно.
2) Вам потребуется найти хэндл окна (HWND) - Get Image By HWND. - это и есть хэндл окна?
3) Отдельный браузер это только Internet Explorer?
4) рекомендую указывать также класс окна для более надёжной работы - что за класс?
5) Не очень удобно искать кнопки, не проще ли просто по координатам щелкать? (нельзя ли привязать как-то клик не к экрану а к labview-шной программе).
6) Вы ранее отвечали, что программа должна быть открыта - в свернутом режиме не получится т.е. (уточняю на всякий случай)?
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: Labview+Google Chrome
HWND - хэндл / дескриптор окна, уникальный номер, идентифицирующий окно в данный момент времени. Наберите в гугле "HWND" для изучения "теории окон" Microsoft.rushonda писал(а):2) Вам потребуется найти хэндл окна (HWND) - Get Image By HWND. - это и есть хэндл окна?
Инструмент Get Image By HWND позволяет снять скриншот окна по его хэндлу. На вход подаёте HWND, на выходе получаете картинку в виде picture или массива.
Нет, почему, используйте то, что понравится. Однако я бы всё же остановился на компоненте WebBrowser, так как он способен сам отдавать хэндл своего окна - свойство HWND доступно через узел свойств. Так что можно не париться с поиском окна. Останется только "сфоткать".rushonda писал(а):3) Отдельный браузер это только Internet Explorer?
rushonda писал(а):4) рекомендую указывать также класс окна для более надёжной работы - что за класс?
Класс окна можно посмотреть с помощью утилит наподобие WinSpy++. См. Программы для работы с окнами приложенийMSDN писал(а):HWND WINAPI FindWindow(
_In_opt_ LPCTSTR lpClassName,
_In_opt_ LPCTSTR lpWindowName
);
Parameters
lpClassName [in, optional]
Type: LPCTSTR
The class name or a class atom created by a previous call to the RegisterClass or RegisterClassEx function. The atom must be in the low-order word of lpClassName; the high-order word must be zero.
If lpClassName points to a string, it specifies the window class name. The class name can be any name registered with RegisterClass or RegisterClassEx, or any of the predefined control-class names.
If lpClassName is NULL, it finds any window whose title matches the lpWindowName parameter.
Можете и по координатам. Но, на мой взгляд, меньше надёжность алгоритма в том плане, что координаты будут жёстко фиксированы, тогда как кнопка может быть распознана, даже если она перемещена с исходной позиции. IMAQ Match Color Pattern VI может по шаблону (изображению) кнопки найти эту кнопку на заданном изображении, где бы она ни находилась, лишь бы она была там. И "прикрутить" этот совсем несложно.rushonda писал(а):5) Не очень удобно искать кнопки, не проще ли просто по координатам щелкать? (нельзя ли привязать как-то клик не к экрану а к labview-шной программе).
Сделать скрин свёрнутого окна можно (хотя и посложнее, чем развёрнутого), а вот сделать клик - увы. Хотя можно попробовать послать сообщение (SendMessage) приложению, но этот метод довольно ненадёжен, т.к. сторонние сообщения не всегда доходят до программы (много нюансов, например, программа запросто может игнорить целый диапазон сообщений или как-то иначе реагировать на них, чем вы хотели бы). Так что придётся работать именно с развёрнутым и желательно видимым окном браузера. Здесь будет весьма кстати дополнительный рабочий стол (монитор).rushonda писал(а):6) Вы ранее отвечали, что программа должна быть открыта - в свернутом режиме не получится т.е. (уточняю на всякий случай)?
-
- developer
- Сообщения: 289
- Зарегистрирован: 26 фев 2016, 06:31
- Версия LabVIEW: 18-20
- Благодарил (а): 6 раз
- Поблагодарили: 7 раз
- Контактная информация:
Re: Labview+Google Chrome
dadreamer, ДОБРЫЙ ДЕНЬ! никак не могу найти откуда берется последняя строка
&redirect=index.php&login=%D0%92%D1%85%D0%BE%D0%B4
в post запросе?
&redirect=index.php&login= - видно сниффером, а вот %D0%92%D1%85%D0%BE%D0%B4 - нигде не нашел, подскажите...
&redirect=index.php&login=%D0%92%D1%85%D0%BE%D0%B4
в post запросе?
&redirect=index.php&login= - видно сниффером, а вот %D0%92%D1%85%D0%BE%D0%B4 - нигде не нашел, подскажите...
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: Labview+Google Chrome
Ну, если декодировать %D0%92%D1%85%D0%BE%D0%B4, то получится Вход. А откуда вы эту строку получили? У меня в программе вроде такого нет. Может, можно передать пустой параметр или вовсе не передавать - проверьте.rushonda писал(а):никак не могу найти откуда берется последняя строка
&redirect=index.php&login=%D0%92%D1%85%D0%BE%D0%B4
в post запросе?
&redirect=index.php&login= - видно сниффером, а вот %D0%92%D1%85%D0%BE%D0%B4 - нигде не нашел, подскажите...
-
- developer
- Сообщения: 289
- Зарегистрирован: 26 фев 2016, 06:31
- Версия LabVIEW: 18-20
- Благодарил (а): 6 раз
- Поблагодарили: 7 раз
- Контактная информация:
Re: Labview+Google Chrome
dadreamer, если убрать, то не работает - я так понимаю это и есть нажатие кнопки ВХОД!?
у Вас в программе как раз и есть эта строчка (на первой странице вложенная картинка)
кстати как дешифровать %D0%92%D1%85%D0%BE%D0%B4 во вход?
И все-таки как получить данную строчку в программе?
у Вас в программе как раз и есть эта строчка (на первой странице вложенная картинка)
кстати как дешифровать %D0%92%D1%85%D0%BE%D0%B4 во вход?
И все-таки как получить данную строчку в программе?
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: Labview+Google Chrome
Не совсем. Это php-скрипту передаётся параметр (переменная) login, содержащий(ая) значение %D0%92%D1%85%D0%BE%D0%B4, всего-то. Нажатие кнопки - это post-запрос, ничего другого в обычном html нет.rushonda писал(а):dadreamer, если убрать, то не работает - я так понимаю это и есть нажатие кнопки ВХОД!?
Понятно. Я думал, вы про сайт NI.rushonda писал(а):у Вас в программе как раз и есть эта строчка (на первой странице вложенная картинка)
А зачем? Вообще, это URL Encode - одна из стандартных форм передачи юникод-текста. Например, на Википедии используется, да много где ещё. Ну, вбейте в гугл URL Decoder Online, много конверторов вылезет.rushonda писал(а):кстати как дешифровать %D0%92%D1%85%D0%BE%D0%B4 во вход?
Я всё параметры брал из сниффера. Ничего другого не использовал больше. У меня стоит Fiddler, по-моему это самый удобный сниффер. Остальное, имхо, так себе.rushonda писал(а):И все-таки как получить данную строчку в программе?
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
- 3 Ответы
- 2078 Просмотры
-
Последнее сообщение PozhiloyGoblin
-
- 0 Ответы
- 348 Просмотры
-
Последнее сообщение maxim_MA
-
- 23 Ответы
- 2439 Просмотры
-
Последнее сообщение dadreamer
-
- 2 Ответы
- 392 Просмотры
-
Последнее сообщение ujin1
-
- 5 Ответы
- 848 Просмотры
-
Последнее сообщение dadreamer