Labview+Google Chrome

Темы связанные с инженерными разработками, но не подходящие в другие ветки форума

Re: Labview+Google Chrome

Postby rushonda on 23 Nov 2017, 21:32

1) Если можно то VI -шку сделайте плиз.
2) А в случае кликов нет примера? В этом варианте кстати окно должно быть открыто всегда? Vision кстати стоит.
3) Где искать литературу по HTTP, а то функции описаны, а что на вход подавать непонятно в каком виде.
4) На питоне например клик по кнопкам делается вроде просто - смотришь код страницы, ищешь описание кнопки и вперед. А тут что-то очень мудрено.
rushonda
assistant
assistant
 
Posts: 115
Joined: 26 Feb 2016, 06:31
LabVIEW Version: 14
Karma: 6

Re: Labview+Google Chrome

Postby dadreamer on 23 Nov 2017, 21:58

rushonda wrote:1) Если можно то VI -шку сделайте плиз.

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

Setting Cursor Position Programmatically With LabVIEW
How Can I Programmatically Simulate A Mouse Click?
Конечно, должно быть открыто, пока выполняются клики или снятие изображения для поиска кнопки или ещё что-то, связанное с этим. Когда окно по алгоритму уже не нужно, его можно закрыть.
rushonda wrote:3) Где искать литературу по HTTP, а то функции описаны, а что на вход подавать непонятно в каком виде.

Вам должны быть интересны только два вида запросов - GET и POST. Остальное в данной задаче не понадобится. Почитайте про эти запросы на вики или наберите в гугле - инфы достаточно. Параметры: для GET адрес сайта (сервера), для POST адрес сайта (сервера) и отсылаемый на сервер параметр (параметры) (в :labview: это одна переменная - строка - содержащая ряд параметров, разделяемых &). Для просмотра запросов, отправляемых браузером на сервер и получаемых с сервера, можно установить сниффер, например плагин для Лисы Live Http Headers или отдельный софт Fiddler или Charles. Сниффер всегда помогает в составлении верных запросов.
rushonda wrote:4) На питоне например клик по кнопкам делается вроде просто - смотришь код страницы, ищешь описание кнопки и вперед. А тут что-то очень мудрено.

Очевидно, для Питона существует фреймворк, облегчающий задачу парсинга веб-контента. Не знаю, существуют ли подобные тулкиты под :labview: , специально не искал. Но, к примеру, в Дельфях есть аналогичные HTTP-клиенты - Indy или Synapse. Работа с ними почти ничем не отличается от того, что приходится делать в :labview: . Мне приходилось писать простенькие тулзы для конкретных сайтов. Запросы и парсинг - классика. :wink:
User avatar
dadreamer
professor
professor
 
Posts: 3099
Joined: 17 Feb 2013, 16:33
Medals: 4
Activity (1) Professionalism (1) Автор (2)
LabVIEW Version: 2.5 — 2018
Karma: 781
I/O VIP vision internet

Re: Labview+Google Chrome

Postby rushonda on 23 Nov 2017, 23:10

Ок, спасибо. Плагин поставил.
Если окно нужно держать постоянно открытым, то лучше все-таки сделать через GET и POST.
rushonda
assistant
assistant
 
Posts: 115
Joined: 26 Feb 2016, 06:31
LabVIEW Version: 14
Karma: 6

Re: Labview+Google Chrome

Postby dadreamer on 24 Nov 2017, 08:59

ni_login.vi
lv2014
(17.13 KiB) Downloaded 66 times

По-прежнему через раз логинится. Ну, я думаю, это не критично - можно вызвать код несколько раз, пока не зайдёт в аккаунт. При успешной авторизации в заголовках должны быть строки
Code: Select all
HTTP/1.1 302 Moved Temporarily

Location: http://www.ni.com/ru-ru.html

Это значит, что сервер перенаправляет клиента по адресу Location. В теле ответа будет
Code: Select all
<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>

Вам нужно будет "отловить" этот ответ 302, чтобы точно знать, что можно дальше работать. Для большей уверенности можно зайти потом на
Code: Select all
http://www.ni.com/myni/dashboard/ru/

В теле ответа будет инфа о данных юзера (ник, имя, фамилия и т.д.).
User avatar
dadreamer
professor
professor
 
Posts: 3099
Joined: 17 Feb 2013, 16:33
Medals: 4
Activity (1) Professionalism (1) Автор (2)
LabVIEW Version: 2.5 — 2018
Karma: 781
I/O VIP vision internet

Re: Labview+Google Chrome

Postby rushonda on 24 Nov 2017, 18:35

О, спасибо.
Вроде принцип становится понятен - запрос-ответ - поиск инфы в теле ответа. Но вопросы все же остались и они кажется простые:
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_SUBMIT=1&javax.faces.ViewState=
&LoginForm:_idcl=LoginForm:continue
и др.
Как составлять сам запрос в POST - откуда брать инфу и в каком виде составлять?

2) ну и как составить запрос например клик по вкладке ИННОВАЦИИ и вбить строку в ПОИСК на этом сайте - в принципе вопрос аналогичен 1, но может как пример поможет быстрее разобраться. Заранее спасибо
rushonda
assistant
assistant
 
Posts: 115
Joined: 26 Feb 2016, 06:31
LabVIEW Version: 14
Karma: 6

Re: Labview+Google Chrome

Postby dadreamer on 24 Nov 2017, 19:10

rushonda, ответ на оба вопроса:
- открываете начальную страницу сайта, открываете окно сниффера, чистите лог (если там что-то есть), выполняете какое-то одно действие на сайте, смотрите запросы в логе сниффера, воспроизводите запрос в программе.

Все параметры берутся из сниффера. Для GET достаточно посмотреть адрес, по которому обращаться. Для POST кроме адреса нужно посмотреть передаваемые параметры. Они идут в конце запроса, после заголовков. Обычно в сниффере самый первый запрос - тот, что нужен. Дальше идёт уже подгрузка различных модулей, скриптов, шаблонов, стилей и т.п.
Attachments
2017-11-24_21-14-30.jpg
User avatar
dadreamer
professor
professor
 
Posts: 3099
Joined: 17 Feb 2013, 16:33
Medals: 4
Activity (1) Professionalism (1) Автор (2)
LabVIEW Version: 2.5 — 2018
Karma: 781
I/O VIP vision internet

Re: Labview+Google Chrome

Postby rushonda on 01 Apr 2018, 08:08

dadreamer, вы писали про вариант с кликером + vision... можно кратко как это сделать? (как изображение считать и соответственно кликнуть?)
rushonda
assistant
assistant
 
Posts: 115
Joined: 26 Feb 2016, 06:31
LabVIEW Version: 14
Karma: 6

Re: Labview+Google Chrome

Postby dadreamer on 01 Apr 2018, 14:51

rushonda wrote:dadreamer, вы писали про вариант с кликером + vision... можно кратко как это сделать? (как изображение считать и соответственно кликнуть?)

Ну, я уже в этой теме писал, что нужно снять скриншот окна браузера, найти на картинке кнопку по её изображению, навести курсор мыши на центр кнопки и сэмулировать клик. В принципе, ничего архисложного, работа на день-два. Для съёмки скриншота окна можете взять мой SubVI - Get Image By HWND. Вам потребуется найти хэндл окна (HWND). Если будете использовать отдельный браузер, то поможет функция FindWindow (рекомендую указывать также класс окна для более надёжной работы). Если же собираетесь использовать WebBrowser, то можно попробовать GetTopWindow с хэндлом основного :vi: . Далее, поиск кнопки реализуется через инструменты VDM для поиска цветного шаблона - IMAQ Match Color Pattern VI и сопутствующие :vi: (см. встроенную справку и примеры к Vision). Перемещение курсора мыши и программный клик выполняются через функции WinAPI, я уже приводил ссылки на примеры в этой теме.
User avatar
dadreamer
professor
professor
 
Posts: 3099
Joined: 17 Feb 2013, 16:33
Medals: 4
Activity (1) Professionalism (1) Автор (2)
LabVIEW Version: 2.5 — 2018
Karma: 781
I/O VIP vision internet

Re: Labview+Google Chrome

Postby rushonda on 04 Apr 2018, 15:06

dadreamer, Остались некоторые вопросы.
1)Скрин я сделал - с библиотекой vision работал, клик мышкой тоже ясно.
2) Вам потребуется найти хэндл окна (HWND) - Get Image By HWND. - это и есть хэндл окна?
3) Отдельный браузер это только Internet Explorer?
4) рекомендую указывать также класс окна для более надёжной работы - что за класс?
5) Не очень удобно искать кнопки, не проще ли просто по координатам щелкать? (нельзя ли привязать как-то клик не к экрану а к labview-шной программе).
6) Вы ранее отвечали, что программа должна быть открыта - в свернутом режиме не получится т.е. (уточняю на всякий случай)?
rushonda
assistant
assistant
 
Posts: 115
Joined: 26 Feb 2016, 06:31
LabVIEW Version: 14
Karma: 6

Re: Labview+Google Chrome

Postby dadreamer on 05 Apr 2018, 17:49

rushonda wrote:2) Вам потребуется найти хэндл окна (HWND) - Get Image By HWND. - это и есть хэндл окна?

HWND - хэндл / дескриптор окна, уникальный номер, идентифицирующий окно в данный момент времени. Наберите в гугле "HWND" для изучения "теории окон" Microsoft.

Инструмент Get Image By HWND позволяет снять скриншот окна по его хэндлу. На вход подаёте HWND, на выходе получаете картинку в виде picture или массива.
rushonda wrote:3) Отдельный браузер это только Internet Explorer?

Нет, почему, используйте то, что понравится. Однако я бы всё же остановился на компоненте WebBrowser, так как он способен сам отдавать хэндл своего окна - свойство HWND доступно через узел свойств. Так что можно не париться с поиском окна. Останется только "сфоткать".
rushonda wrote:4) рекомендую указывать также класс окна для более надёжной работы - что за класс?

MSDN wrote: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.

Класс окна можно посмотреть с помощью утилит наподобие WinSpy++. См. Программы для работы с окнами приложений
rushonda wrote:5) Не очень удобно искать кнопки, не проще ли просто по координатам щелкать? (нельзя ли привязать как-то клик не к экрану а к labview-шной программе).

Можете и по координатам. Но, на мой взгляд, меньше надёжность алгоритма в том плане, что координаты будут жёстко фиксированы, тогда как кнопка может быть распознана, даже если она перемещена с исходной позиции. IMAQ Match Color Pattern VI может по шаблону (изображению) кнопки найти эту кнопку на заданном изображении, где бы она ни находилась, лишь бы она была там. И "прикрутить" этот :vi: совсем несложно.
rushonda wrote:6) Вы ранее отвечали, что программа должна быть открыта - в свернутом режиме не получится т.е. (уточняю на всякий случай)?

Сделать скрин свёрнутого окна можно (хотя и посложнее, чем развёрнутого), а вот сделать клик - увы. Хотя можно попробовать послать сообщение (SendMessage) приложению, но этот метод довольно ненадёжен, т.к. сторонние сообщения не всегда доходят до программы (много нюансов, например, программа запросто может игнорить целый диапазон сообщений или как-то иначе реагировать на них, чем вы хотели бы). Так что придётся работать именно с развёрнутым и желательно видимым окном браузера. Здесь будет весьма кстати дополнительный рабочий стол (монитор). :wink:
User avatar
dadreamer
professor
professor
 
Posts: 3099
Joined: 17 Feb 2013, 16:33
Medals: 4
Activity (1) Professionalism (1) Автор (2)
LabVIEW Version: 2.5 — 2018
Karma: 781
I/O VIP vision internet

Re: Labview+Google Chrome

Postby rushonda on 20 Apr 2018, 08:56

dadreamer, спасибо, буду разбираться
rushonda
assistant
assistant
 
Posts: 115
Joined: 26 Feb 2016, 06:31
LabVIEW Version: 14
Karma: 6

Re: Labview+Google Chrome

Postby rushonda on 29 Apr 2018, 16:07

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 - нигде не нашел, подскажите...
rushonda
assistant
assistant
 
Posts: 115
Joined: 26 Feb 2016, 06:31
LabVIEW Version: 14
Karma: 6

Re: Labview+Google Chrome

Postby dadreamer on 29 Apr 2018, 19:43

rushonda wrote:никак не могу найти откуда берется последняя строка
&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 - нигде не нашел, подскажите...

Ну, если декодировать %D0%92%D1%85%D0%BE%D0%B4, то получится Вход. А откуда вы эту строку получили? У меня в программе вроде такого нет. Может, можно передать пустой параметр или вовсе не передавать - проверьте.
User avatar
dadreamer
professor
professor
 
Posts: 3099
Joined: 17 Feb 2013, 16:33
Medals: 4
Activity (1) Professionalism (1) Автор (2)
LabVIEW Version: 2.5 — 2018
Karma: 781
I/O VIP vision internet

Re: Labview+Google Chrome

Postby rushonda on 29 Apr 2018, 20:53

dadreamer, если убрать, то не работает - я так понимаю это и есть нажатие кнопки ВХОД!?
у Вас в программе как раз и есть эта строчка (на первой странице вложенная картинка)
кстати как дешифровать %D0%92%D1%85%D0%BE%D0%B4 во вход?
И все-таки как получить данную строчку в программе?
rushonda
assistant
assistant
 
Posts: 115
Joined: 26 Feb 2016, 06:31
LabVIEW Version: 14
Karma: 6

Re: Labview+Google Chrome

Postby dadreamer on 29 Apr 2018, 22:41

rushonda wrote:dadreamer, если убрать, то не работает - я так понимаю это и есть нажатие кнопки ВХОД!?

Не совсем. Это php-скрипту передаётся параметр (переменная) login, содержащий(ая) значение %D0%92%D1%85%D0%BE%D0%B4, всего-то. Нажатие кнопки - это post-запрос, ничего другого в обычном html нет.
rushonda wrote:у Вас в программе как раз и есть эта строчка (на первой странице вложенная картинка)

Понятно. Я думал, вы про сайт NI.
rushonda wrote:кстати как дешифровать %D0%92%D1%85%D0%BE%D0%B4 во вход?

А зачем? Вообще, это URL Encode - одна из стандартных форм передачи юникод-текста. Например, на Википедии используется, да много где ещё. Ну, вбейте в гугл URL Decoder Online, много конверторов вылезет.
rushonda wrote:И все-таки как получить данную строчку в программе?

Я всё параметры брал из сниффера. Ничего другого не использовал больше. У меня стоит Fiddler, по-моему это самый удобный сниффер. Остальное, имхо, так себе.
User avatar
dadreamer
professor
professor
 
Posts: 3099
Joined: 17 Feb 2013, 16:33
Medals: 4
Activity (1) Professionalism (1) Автор (2)
LabVIEW Version: 2.5 — 2018
Karma: 781
I/O VIP vision internet

PreviousNext

Return to Общие

Who is online

Users browsing this forum: Yandex and 5 guests

cron