WBApp CEF

Chrome Logo

CEF (Chromium Embedded Framework, Chrome)

Современный движок браузера с поддержкой выполнения пользовательских Javascript.

Раздел форума WBAppCEF

Примечание: Для работы CEF Требуется его установить. Инструкция по установке.

Выбор движка браузера для WBApp осуществляется в WBApp Launcher (ctrl+w из главного окна программы)

Content Downloader


Содержание

Принцип работы WBApp (настоятельно рекомендуется осознать)

Понимание принципа работы списка событий и описание событий WBAppCEF

Ожидание готовности загрузки WEB-страниц

Использование менеджера Javascript

Отладка Javascript

Автоматическая смена UserAgent (из списка в файле)

Использование прокси-серверов

Как быстро и просто выполнять действия над элементами WEB страницы (клик, вставка текста и прочее)

Ожидание ответа сервера на нужный запрос(ы) с помощью события [WAITFORRESPONSE2]

Как получить XPath нужного DOM-элемента WEB-страницы и выполнить по нему поиск элемента, например, для эмуляции клика по нему

Как выполнять действия над элементами WEB-страницы (клик, вставка текста и прочее)

Простая инструкция по созданию событий кликов над элементами WEB страниц

Использование GETHTML с заданием границ парсинга (как в Content Downloader)

Эмуляция нажатий кнопок клавиатуры

Эмуляция кликов мышью

Автоматическая обработка файловых диалогов/Автоматическая вставка имен файлов в файловые диалоги

Передача (при парсинге) текстовых данных из Content Downloader в WBAppCEF

Передача HTTP заголовков в Content Downloader/Автоматическая авторизация методом передачи cookie и HTTP заголовков из WBAppCEF в Content Downloader (событие [GETREQUESTHEADERS])

Передача Cookie из Content Downloader/Установка Cookie в проекте WBAppCEF

Эмуляция повторяющихся действий

Условия

Примеры решения задач

Дополнительные материалы


Для возврата к верху страницы нажимайте кнопку home


Принцип работы WBApp

Основы
В Content Downloader при парсинге контента или ссылок можно использовать приложение WBApp. В отличие от библиотек запросов, которые посылают один запрос к указанным URL, WBApp для загрузки WEB страниц использует движок браузера. В WBAppCEF используется Chromium (аналог Chrome). При парсинге с использованием WBApp на WEB страницах будет производится обработка Javascript и выполняться подгрузка дополнительных данных.

Выбор движка браузера для WBApp производится в WBApp Launcher (ctrl+w)

Использование WBApp для различных функций программы включается в WBApp Launcher (ctrl+w) или в окне настроек HTTP запросов программы (ctrl+h)

Также WBApp можно запускать из шаблона вывода с помощью макросов: [WBAPP_F] и [WBAPP] (они отличаются друг от друга только порядком выполнения относительно других функций и макросов).

Для редактирования проектов WBApp (в которых можно настроить автоматизированное выполнение действий пользователя на WEB страницах) используются следующие возможности:

Примечание: Изменения проектов WBApp происходят автоматически при закрытии WBApp!


Для включения отображения окна WBApp при парсинге или предпросмотре пользуйтесь этими опциями окна ctrl+h




Также будет полезно настроить функции ожидания готовности загрузки WEB страниц в WBApp для того, чтобы WBApp корректно дожидалась загрузки WEB страницы и приступала к выполнению списка событий или завершению работы (если список событий не используется) с передачей полученного кода WEB страницы в Content Downloader.


Список событий расположен в левой части окна WBApp. В него можно добавлять события для автоматизированной имитации действий пользователя на WEB страницах (прокрутка страниц вниз, клики по элементам, вставка текста в текстовые поля и другое).


В результат работы WBApp передается HTML код страницы, который был на момент завершения работы WBApp.

Если вы хотите передать в Content Downloader код WEB страницы, который был НЕ в момент завершения работы WBApp, а в момент выполнения того или иного события из списка, используйте [GETHTML]

При выполнении событий [GETHTML] будет браться код WEB страницы на момент выполнения этих событий. Также можно использовать несколько событий [GETHTML], тогда передаваемый в Content Downloader код будет суммироваться. Передача полученного кода в Content Downloader будет производиться в момент завершения работы приложения WBApp.



Ожидание готовности загрузки WEB-страниц

Используйте этот способ

Другие способы (менее эффективные)

Как при парсинге дожидаться готовности загрузки WEB-страниц с помощью события [WAITFORMAINFRAMELOAD]
Content Downloader

Примечание: Не всегда скрипты на WEB-странице готовы к работе сразу после загрузки основного фрейма. Иногда требуется разместить дополнительное событие ожидание [WAIT] после [WAITFORMAINFRAMELOAD]

Как при парсинге дожидаться готовности загрузки WEB-страниц с помощью события [WAITFORRESPONSE]


Использование менеджера Javascript

Менеджер Javascript
Content Downloader


Также учтите, что в менеджере Javascript можно использовать оператор списка событий [INT1] и вставлять передаваемые значения из Content Downloader (для использования переданных значений в скриптах)

Content Downloader

Подробнее о передаче текстовых данных из Content Downloader можно почитать тут.



Отладка Javascript

Отладка Javascript в Firefox
Нажмите shift+ctrl+k в Firefox


Автоматическая смена UserAgent (из списка в файле)

Подключение текстового файла со списком UserAgent
WBAppCEF


Использование прокси-серверов

Прокси
WBAppCEF

WBAppCEF

Для режима редактирования проекта WBAppCEF прокси устанавливается в этом окне (смотрите скриншот выше).

При парсинге прокси будут браться из списка прокси-серверов Content Downloader.



Как быстро и просто выполнять действия над элементами WEB страницы (клик, вставка текста и прочее)

Быстрое создание скриптов списка событий в WBAppCEF

WBAppCEF

После создания скрипта (или скриптов) списка событий вы можете запускать их поотдельности (выделить нужный и нажать F3), либо запустить выполнение всего списка событий (F1).

Наслаждайтесь…



Как получить XPath нужного DOM-элемента WEB-страницы и выполнить по нему поиск элемента, например, для эмуляции клика по нему


Получение XPath из плагина TruePath для Firefox
Получение XPath из плагина XPath Generator для Chrome
Получение XPath из Firefox
Получить XPath в Firefox


Получить XPath в Firefox
Получение XPath в WBAppCEF
WBAppCEF
Полученный XPath элемента WEB-страницы будет выглядеть примерно так

1
/html/body/div[3]/div[1]/div[3]/div[3]/div[2]/div[1]/div[1]/div/div[2]/div/div/a

Зная XPath элемента WEB-страницы, в WBAppCEF с помощью Javascript можно будет выполнять действия с этим элементом, например, делать клик по нему.

1
2
3
4
5
var bxpath = document.evaluate ('/html/body/div[3]/div[1]/div[3]/div[3]/div[2]/div[1]/div[1]/div/div[2]/div/div/a', document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null);
DOMNODE = bxpath.singleNodeValue;
 
///Если надо выполнить клик:
DOMNODE.click();



Как выполнять действия над элементами WEB-страницы (клик, вставка текста и прочее)


Эмуляция клика, вставки текста и прочее

Эмуляция действий в WBAppCEF выполняется с помощью Javascript. Сначала вы находите элемент WEB страницы (DOMNODE), затем выполняете над ним нужные действия.

Примечание: Поиск элемента по XPath на некоторых сайтах не всегда корректно работает, так как структура различных WEB-страниц сайта разная. В таких случаях можно искать элемент по его атрибутам.

WBAppCEF

WBAppCEF

Также обратите внимание и на другие события, например на эмуляцию прокрутки WEB-страницы вниз.

WBAppCEF



Простая инструкция по созданию событий кликов над элементами WEB страниц


Эмуляция клика с помощью XPath, взятого из Firefox плагина TRUEPath
Firefox (TRUEPath)

Firefox (TRUEPath)

WBAppCEF (эмуляция клика по элементу WEB страницы)



Использование GETHTML с заданием границ парсинга (как в Content Downloader)


Взятие нужной части кода WEB-страницы
Ниже избавление от рутины.

В WBAppCEF копируем код WEB-страницы таким способом

WBAppCEF

Переходим в Content Downloader, открываем инструмент задания границ парсинга, кликаем в поле с кодом WEB-документа (для перевода фокуса в него) и нажимаем ctrl+v для вставки кода из буфера.

Далее задаете границы парсинга обычным способом. После задания границ парсинга, копируем событие [GETHTML] из контекстного меню, как показано на скриншоте ниже

Content Downloader

В итоге получаем готовое событие для вставки в WBAppCEF

1
[GETHTML]:[1]2|||[3]4


Эмуляция нажатий кнопок клавиатуры


Эмулируем
WBAppCEF

Для эмуляции нажатий кнопок клавиатуры используйте событие[SENDKEYPRESS]

1
[SENDKEYPRESS]:код клавиши

Например, для нажатия стрелки вверх используйте код клавиши 38

1
[SENDKEYPRESS]:38

Для эмуляции сочетания ctr + клавиша добавьте к коду клавиши оператор {CTRL}

1
[SENDKEYPRESS]:38{CTRL}

Для эмуляции сочетания shift + клавиша добавьте к коду клавиши оператор {SHIFT}

1
[SENDKEYPRESS]:38{SHIFT}

SPACEBAR – 32
END key – 35
HOME key – 36
LEFT ARROW key – 37
UP ARROW key – 38
RIGHT ARROW key – 39
DOWN ARROW key – 40
Таблица кодов клавиш

PS: Не забывайте вставлять [WAIT]:100 после события [SENDKEYPRESS]



Эмуляция кликов мышью


Эмулируем
ВАЖНО: Клики по элементу WEB-страницы нужно производить с помощью DOMNODE.click();
Способ эмуляции кликов мышью (изложенный ниже) нужно применять в случае, если DOMNODE.click(); применить не удается.

Данный вид эмуляции имитирует нажатие левой кнопки мыши и применяется в случаях, когда DOMNODE.click(); не срабатывает или не подходит.

Для проверки эмуляции клика мышью наведите курсор над нужным объектом WEB-страницы (DOMNODE) и нажмите f5. После этого в список событий добавится элемент имитации клика [MOUSECLICK]:X|Y, который можно запускать с помощью двойного клика по нему.

WBAppCEF

WBAppCEF

Далее составляем список событий для получения координат нужного DOMNODE и имитации клика мышью по нужному DOMNODE

WBAppCEF

WBAppCEF



Автоматическая обработка файловых диалогов/Автоматическая вставка имен файлов в файловые диалоги


Автоматическая обработка окон выбора файлов
Допустим, нужно автоматизировать Upload файла с диска на сайте. Например, вы в админ панели добавляете товар или статью и нужно к ней загрузить на сервер картинки с диска. При клике на кнопку выбора файлов вы увидите файловый диалог (в котором нужно выбрать файл). Для автоматизации вставки имени файла (без показа файлового диалога) используются события: [RESETDIALOGFILENAME] (сброс значения имени файла в памяти), [SETDIALOGFILENAME] (установка значения имени файла для появляющихся файловых диалогов).

Важно понимать, что когда значение имени файла в памяти не установлено, окна выбора файлов будут появляться в обычном режиме. Если же установить значение имени файла для файловых диалогов с помощью события [SETDIALOGFILENAME]:C:\Files\Sample.jpg, то во все последующие файловые диалоги будет подставляться C:\Files\Sample.jpg без отображения диалога выбора файла!

При повторном вызове [SETDIALOGFILENAME], имя файла в памяти будет перезаписываться на новое.

Имена файлов можно прописывать в списке событий в виде:

1
2
3
4
5
6
7
[SETDIALOGFILENAME]:путь к файлу на диске
 
[SETDIALOGFILENAME]:C:\Files\Sample.jpg
 
[SETDIALOGFILENAME]:[CDDATA:1]
 
[SETDIALOGFILENAME]:[PARAM]

Где [CDDATA:n] и [PARAM] – передаваемые из Content Downloader данные.

Инструкция по передаче данных из Content Downloader в WBApp.

WBAppCEF

WBAppCEF

WBAppCEF



Передача (при парсинге) текстовых данных из Content Downloader в WBAppCEF


Передаем текстовые данные из Content Downloader в WBAppCEF при парсинге


Передача HTTP заголовков в Content Downloader/Автоматическая авторизация методом передачи cookie и HTTP заголовков из WBAppCEF в Content Downloader


Передаем заголовки с помощью события [GETREQUESTHEADERS]



События для получения HTTP заголовков запросов WBAppCEF с целью передачи их в Content Downloader

WBAppCEF


WBAppCEF

Примечание: Для использования нескольких вхождений для фильтрации URL запросов, перечислите их через |||

1
[GETREQUESTHEADERS]:all|||products|||prods|||.png



WBAppCEF


В видео ниже показан принцип работы событий: [GETREQUESTHEADERS] и [GETREQUESTHEADERS_APPLY] (для получения HTTP заголовков из WBAppCEF)




Обратите внимание на введенную возможность добавления к результату работы WBAppCEF URL адресов HTTP запросов, отловленных с помощью [GETREQUESTHEADERS]

WBAppCEF

Если в Content Downloader нужно передать только полученные URL адреса (без кода WEB-документа), добавьте событие [RESETSTOREDCODE] перед событием [ADDTORESULT]:{REQHEADERSURLS}

1
2
3
4
...
[RESETSTOREDCODE]
[ADDTORESULT]:{REQHEADERSURLS}
...

Примечание: Вместо {REQHEADERSURLS} можно использовать оператор {REQHEADERSURL} (вывод не всех URL, а только последнего полученного).


Выполнение автоматической авторизации на сайте методом передачи HTTP заголовков из WBAppCEF в Content Downloader

Content Downloader


Content Downloader


Content Downloader


Content Downloader


Content Downloader


В видео ниже показан пример получения HTTP заголовка authorization: Bearer для автоматической авторизации на сайте

([ADDTORESULT]:{REQHEADERSURLS}) Добавление к результату работы WBAppCEF URL адресов HTTP запросов, отловленных с помощью [GETREQUESTHEADERS]

Обратите внимание на введенную возможность добавления к результату работы WBAppCEF URL адресов HTTP запросов, отловленных с помощью [GETREQUESTHEADERS]

WBAppCEF

Если в Content Downloader нужно передать только полученные URL адреса (без кода WEB-документа), добавьте событие [RESETSTOREDCODE] перед событием [ADDTORESULT]:{REQHEADERSURLS}

1
2
3
4
...
[RESETSTOREDCODE]
[ADDTORESULT]:{REQHEADERSURLS}
...

Примечание: Вместо {REQHEADERSURLS} можно использовать оператор {REQHEADERSURL} (вывод не всех URL, а только последнего полученного).



Передача Cookie из Content Downloader/Установка Cookie в проекте WBAppCEF


Устанавливаем Cookie
В режиме редактирования проекта WBAppCEF Cookie устанавливаются, как показано на скриншоте ниже.

WBAppCEF

В режиме парсинга с использованием WBAppCEF Cookie будут браться из Content Downloader из окна ctrl+h!



Примеры решения задач


Прокликивание страниц выдачи сайтов
Видео 1: Прокликивание страниц выдачи сайта с поиском элемента по XPath (самый эффективный и быстрый способ настройки)






Видео 2: Прокликивание страниц выдачи сайта с поиском элемента DOM (для перехода на следующую страницу выдачи) в Javascript по атрибуту innerHTML

– Имитация кликов по элементам WEB-страницы с помощью Javascript

– Ожидание готовности загрузки WEB-страницы осуществляется с помощью события [WAITFORMAINFRAMELOAD]

– Проверка, был клик по кнопке перехода на следующую страницу выдачи или нет, осуществляется с помощью события [CHECKJSMESSAGE]



Видео 3: Прокликивание страниц выдачи сайта с поиском элемента DOM (для перехода на следующую страницу выдачи) в Javascript по атрибуту innerHTML (в случае, когда кнопка перехода на следующую страницу выдачи не пропадает при достижении последней страницы выдачи)

– Имитация кликов по элементам WEB-страницы с помощью Javascript

– Проверка, был клик по кнопке перехода на следующую страницу выдачи или нет, осуществляется с помощью события [IFAQUERYINITIATED]

Автоматическая прокрутка WEB-страницы вниз (для инициализации подгрузки данных)
Событие [SCROLLDOWNTHENRETURN] решает вопрос =)

Автоматическая прокрутка списков WEB-страницы вниз (для инициализации подгрузки данных)
Выполняется с помощью команды Javascript DOMNODE.scrollIntoView();

Выбор элементов выпадающих списков
Помещаем фокус в нужный элемент с помощью Javascript и эмулируем нажатие стрелки вниз для выбора элементов списка

Прокликивание сразу нескольких выпадающих списков опций товаров
Прокликивание цветов товаров в Яндекс маркете

В видео показано:

– способ поиска DOMNODE сразу по нескольким атрибутам (параметрам)

– Создание цикла с помощью события [IFAQUERYINITIATED] и [GOTO]

– Отображение всех атрибутов DOMNODE

Прокликивание атрибутов (размеров) товаров

В видео показано:

– способ поиска определенного по счету DOMNODE

– Создание цикла с помощью события [CHECKJSMESSAGE] и [GOTO]

– Отображение всех атрибутов DOMNODE

Как развернуть сразу все комментарии на WEB страницах
Использование события WAITFORRESPONSE для ускорения выполнения действий на WEB страницах
Прокликивание элементов выпадающих списков select
Смена региона (города) на сайте (запуск проекта WBAppCEF перед парсингом для смены региона, получение cookie с нужным регионом)


Дополнительные материалы


Описание событий назначения и вывода текстовых переменных в WBAppCEF
Разгадывание простых каптч (не Recaptcha)
Загрузка массива данных из файла в память и вывод этих данных в события WBAppCEF


1 Star2 Stars3 Stars4 Stars5 Stars (оценок: 9, средний балл: 5.00)
Loading...

Далее на WEB-странице вставили “пробел”, чтобы навигация по содержанию работала корректно (не упиралась в низ WEB-страницы при скроллинге).









































Автор: admin, 4 July 2019
Рубрики: Новости

Последние статьи

css.php