Альтернатива 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    15879    12    18    

12

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

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

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

5040 руб.

04.05.2021    17796    6    15    

13

[Расширение] БОР-Навигатор.Культура

Зарплата Бюджетный учет WEB-интеграция Обмен с ГосИС Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бюджетный учет Платные (руб)

Расширение конфигурации, включающее в себя объекты, необходимые для подготовки и сдачи отчета "Штатная численность" системы "БОР-Навигатор.Культура" в программе "1С:Зарплата и кадры государственного учреждения", редакция 3.1.

8400 руб.

01.02.2019    25825    9    0    

7

Заполнение по ИНН или наименованию реквизитов контрагента по данным сайта ФНС

Обмен с ГосИС WEB-интеграция Платформа 1С v8.3 Управляемые формы 1С:Комплексная автоматизация 1.х 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия государственного учреждения 1С:Документооборот 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Платные (руб)

Обработка является альтернативой механизму, разработанному фирмой 1С и заполняющему реквизиты контрагента по ИНН или наименованию. Не требуется действующей подписки ИТС. Вызывается как внешняя дополнительная обработка, т.е. используется, непосредственно, из карточки контрагента. Заполнение по ИНН или наименованию реквизитов контрагента по данным сайта ФНС (egrul.nalog.ru) для БП 2.0, БП 3.0, БГУ 1.0, БГУ 2.0, УТ 10.3, УТ 11.x, КА 1.1, КА 2.x, УПП 1.x, ERP 2.x, УНФ 1.5, УНФ 1.6, УНФ 3.0, ДО 2.1

2400 руб.

28.04.2016    88837    162    216    

318

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

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

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

12000 руб.

02.02.2021    16453    42    49    

23
Комментарии
Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. mc2 19 19.10.23 22:34 Сейчас в теме
Огромное спасибо за ваш труд и его публикацию. Обработка очень пригодилась!
2. ONLYTILT 20 24.10.23 13:14 Сейчас в теме
3. fixin 4253 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 232 26.02.24 10:57 Сейчас в теме
Здравствуйте)
Отличная статья, спасибо за кучу сэкономленного времени!
Подскажите пожалуйста как организовать подключение к уже существующей сессии ,браузера после кокончания выполнения кода по её запуску?
5. ONLYTILT 20 26.02.24 11:12 Сейчас в теме
(4) Команды отправляются по адресу /session/{session id}/..., где {session id} - идентификатор сессии, возвращающийся после ее создания
6. altar 232 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/
Оставьте свое сообщение