Альтернатива COM объекту IE или библиотека Selenium 1С

14.12.23

Интеграция - WEB-интеграция

Программная обертка для управления автономным сервером webdriver, а также сервером selenium grid.

Скачать исходный код

Наименование Файл Версия Размер
ДрайверChrome.epf
.epf 12,26Kb
6
.epf 12,26Kb 6 Скачать

Иногда возникает необходимость написания разнообразных костыльных парсеров или, по-новому, роботов RPA. Возникает такая необходимость, например, когда у нужного сервиса банально нет API. В этом случае есть два варианта написания робота (не рассматриваем другие языки программирования):

1. Использование эндпоинта(ов) приложения. В этом случае есть большой минус - мы используем недокументированный интерфейс, соответственно нам придется через инструменты разработчика браузера просматривать исходящие запросы и выводить закономерности для использования их в своем коде. Так-же интерфейс может быть очень сложный, и может потребоваться много времени для того что бы разобраться даже в элементарных действиях, не говоря уже о том что может использоваться ws протокол, который в 1с пока не поддерживается (на момент выпуска публикации).

2. Использование интерфейсов браузера, например COM интерфейс internet explorer, сервер инструментов разработчика того же хрома и т.д.

Предлагаю вариант решения для второго способа. Написание данного решения вдохновлено статьей Управление Selenium Web Driver из 1С (или парсинг из 1С по-взрослому).

Предварительные действия:

1. Установка webdriver, selenium grid.

Установку можно посмотреть в статье Управление Selenium Web Driver из 1С (или парсинг из 1С по-взрослому).

Если вам не нужен selenium grid, можно обойтись без установки Java, достаточно будет просто запустить веб драйвер на нужном порте.

2. Создаем в конфигурации (расширении) обработку.

Она нужна для использования в качестве инстанса браузера, для удобства использования и читабельности кода. 

Обработка будет с двумя реквизитами: "ИдентификаторСессии" - Строка(128) и "НеЗакрыватьПриОшибке" - Булево. Код модуля объекта обработки:

 
Код модуля

Далее во всех примерах будет использоваться созданный объект данной обработки, название переменной - "Браузер".

Примеры использования:

 
 Сессии (открытие и закрытие браузера)
 
 Навигация

 Переход по URL. Обратите внимание, что управление в 1с не вернется пока не будет завершена загрузка страницы. Что браузер будет считать загрузкой страницы - мы можем установить сами см. параметры функции ПараметрыОткрытияБраузера.

Браузер.ПерейтиПоURL("//infostart.ru/"); // Нужно писать полный адрес, инфостарт съедает протокол

Получение текущего URL.

Расположение = Браузер.ТекущийURL();

Получение заголовка страницы.

НаименованиеДокумента = Браузер.ЗаголовокДокумента();

Переход вперед по истории.

Браузер.Вперед();

Переход назад по истории.

Браузер.Назад();

Обновление текущей страницы.

Браузер.Обновить()

 

 
 Работа с контекстом (выполнение скриптов и код страницы)
 
 Работа с cookie
 
 DOM элементы (поиск, значения свойств и т.д.)
 
 Интерактивное взаимодействие с элементом
 
 Скриншоты

Это основные примеры использования, которых хватит для 99% задач. Если нужны более продвинутые функции, например переопределение позиции геолокации или установка сразу всех cookie для всех сайтов (например при открытии браузера), то нужно смотреть Chrome DevTools Protocol, они дают практически безграничные возможности. При запуске сессии в веб драйвере эти инструменты доступны по тому же эндпоинту что и сессия. Пример установки cookie для всех доменов сразу через DevTools Protocol:

Команда = Новый Структура("Метод, Шаблон");
Команда.Метод	= "POST";
Команда.Шаблон	= "/session/[session id]/chromium/send_command";

Параметры = Новый Соответствие;
Параметры["cmd"] = "Network.setCookies";
Параметры["params"] = Новый Структура("cookies", МассивКуки);

Браузер.ВыполнитьКоманду(Команда, Параметры);

Для самых ленивых, кому лень создавать самому обработку из п.2, добавляю в публикацию готовую.

Тестировалось на демке БСП 3.1.7.343.

Расширение Платформа 1С v8.3 Инструменты и обработки Программист http web IE selenium селениум парсер

См. также

Интеграция Альфа Авто 5 / Альфа Авто 6 и AUTOCRM / Инфотек

Сайты и интернет-магазины WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 1С:Управление торговлей 11 Автомобили, автосервисы Россия Управленческий учет Платные (руб)

Интеграционный модуль обмена между конфигурацией Альфа Авто 5 и Альфа Авто 6 и порталом AUTOCRM. Данный модуль универсален. Позволяет работать с несколькими обменами AUTOCRM разных брендов в одной информационной базе в ручном и автоматическом режиме.

36000 руб.

03.08.2020    16178    14    18    

14

Интеграция 1С — Битрикс24. Обмен задачами

Сайты и интернет-магазины Интеграция WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 Управленческий учет Платные (руб)

Интеграция 1С и Битрикс24. Разработка имеет двухстороннюю синхронизацию 1С и Битрикс24 задачами. Решение позволяет создавать пользователя в 1С из Битрикс24 и наоборот. Данная разработка технически подходит под все основные конфигурации линейки продуктов 1С:Предприятие 8.3 (платформа начиная с 8.3.23). При приобретении предоставляется 1 месяц бесплатных обновлений разработки. Доступна демо-версия продукта с подключением Вашего Битрикс24

5040 руб.

04.05.2021    18289    10    15    

16

Модуль для обмена "1С:Предприятие 8. УАТ. ПРОФ" с FortMonitor

WEB-интеграция 8.3.8 Конфигурации 1cv8 Автомобили, автосервисы Беларусь Украина Россия Казахстан Управленческий учет Платные (руб)

Расширение предназначено для конфигурации "1С:Предприятие 8. Управление Автотранспортом. ПРОФ". Функционал модуля: 1. Заполнение регистров сведений по подсистеме "Мониторинг", а именно: события по мониторингу, координаты по мониторингу, пробег и расход по мониторингу, текущее местоположение ТС по мониторингу 2. Заполнение путевого листа: пробег по мониторингу, время выезда/заезда, табличная часть ГСМ, места стоянок по геозонам. 3. Отчеты по данным загруженным в регистры сведений. 4. Предусмотрена автоматическая загрузка данных в фоновом режиме (условия работы данной загрузке читайте в описании товара) Модуль работает без включенной константы по настройкам мониторинга. Модуль формы предоставляется с открытым кодом, общий модуль защищен. Любой заинтересованный пользователь, имеет возможность скачать демо-версию расширения.

22656 руб.

25.05.2021    13037    34    8    

13

Автоматическая загрузка файлов (например, прайс-листов) из электронной почты, FTP, HTTP, их обработка и выгрузка на FTP (на сайт) и для других целей

Прайсы WEB-интеграция Ценообразование, анализ цен Файловый обмен (TXT, XML, DBF), FTP Автомобили, автосервисы Оптовая торговля, дистрибуция, логистика Управленческий учет Платные (руб)

Программа с заданным интервалом времени (или по ручной команде) скачивает файлы (например, прайс-листы поставщиков) из различных источников: письма электронной почты, FTP или HTTP-адреса, и сохраняет их в каталог упорядоченной структуры. При этом извлекает файлы из архивов, может переименовывать файлы и менять их формат (csv, xls, txt). Можно настроить выгрузку обработанных файлов на сайт (через FTP-подключение). Программа будет полезна компаниям, у которых есть большое количество поставщиков и/или прайс-листы поставщиков обновляются часто (необязательно прайс-листы, файлы могут быть любого назначения). Собранные таким образом актуальные версии прайс-листов можно выгрузить с помощью программы себе на сайт (или на любой FTP-сервер) или выполнить другие необходимые задачи.

25200 руб.

28.05.2015    85571    26    51    

50

Интеграция с сервисом vetmanager

WEB-интеграция Платформа 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия 3.0 Бытовые услуги, сервис Платные (руб)

Внешняя обработка разрабатывалась для загрузки документов из Ветменеджер в 1С: Бухгалтерия 3.0

12000 руб.

02.02.2021    16681    43    49    

24
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. mc2 19 19.10.23 22:34 Сейчас в теме
Огромное спасибо за ваш труд и его публикацию. Обработка очень пригодилась!
2. ONLYTILT 20 24.10.23 13:14 Сейчас в теме
3. fixin 4254 20.12.23 21:07 Сейчас в теме
Спасибо, посмотрел как делать ExecuteScript, правда передать туда элемент не удалось, поэтому находил его самим скриптом.

	ТекстСкрипта = "xPathResult = document.evaluate('.//input[contains(@aria-label, ""Дата начала периода"")]', document);
	|if(xPathResult){
	|	element = xPathResult.iterateNext();
	|	//element.value = '11.01.2023';
	|	element.click();
	|	return element.value + ' ::: ' + element.outerHTML;
	|}
	|else return 'Not found';
	|";

Показать


Думал, у вас реализовано Actions, хотел глянуть. Но увы, нету. Но потом не понадобилось. Зато глянул, как получать размеры элемента (rect), уже неплохо.
4. altar 233 26.02.24 10:57 Сейчас в теме
Здравствуйте)
Отличная статья, спасибо за кучу сэкономленного времени!
Подскажите пожалуйста как организовать подключение к уже существующей сессии ,браузера после кокончания выполнения кода по её запуску?
5. ONLYTILT 20 26.02.24 11:12 Сейчас в теме
(4) Команды отправляются по адресу /session/{session id}/..., где {session id} - идентификатор сессии, возвращающийся после ее создания
6. altar 233 26.02.24 17:21 Сейчас в теме
Спасибо, это я нашел)
Вопрос в поддержании рабочего окружения вокруг тестируемого сеанса.
Селениум достаточно быстро гасит подключаемую сессию.
При возникает потребность сохранения им восстановления рабочего окружения данной сессии для того, чтобы, например, не проходить повторно авторизацию с помощью капчи и т.п.
Решение данной задачи в рамках Пайтона врода как имеется (https://qna.habr.com/q/987257?ysclid=lt2pzem0ha785491880).
Возможно адаптировать данное решение в Вашу библиотеку?
Если интересно, готов пообщаться в Телеге (@Altarol)
7. ONLYTILT 20 27.02.24 09:29 Сейчас в теме
(6) А, вы про сессию на каком то сервисе? тогда просто сохраняйте куки и потом ставьте их при запуске, пример есть в статье
8. ONLYTILT 20 27.02.24 10:09 Сейчас в теме
(6) Либо увеличить таймаут сессии ключом запуска --session-timeout
https://www.selenium.dev/documentation/grid/configuration/cli_options/
Оставьте свое сообщение