Ура! Сбылась моя мечта о программном управлении браузером Chrome. Viva Seleium!
Нашел статью, как управлять Chrome через Web-driver API Selenium.
С Selenium я уже раньше работал через JS.NODE. И тогда у меня возникла мысль крутить цикл и принимать команды через текстовый файл, но реализация показалась слишком сложной.
Но мысль была верная, можно развернуть сервер Webdrive и через POST-запросы управлять Selenium.
Мой первый код по авторизации в Сбер-Бизнесе выглядит так:
&НаКлиенте Процедура НачатьАвторизацию() Экспорт АдресВходаВБанк = "https://sbi.sberbank.ru:9443/ic/dcb"; ТекстЗапроса = " |{ |'capabilities': { | 'firstMatch': [ | { | 'browserName': 'chrome', | 'pageLoadStrategy': 'eager' | } | ], | 'timeouts': { | 'Script Timeout': '1800,000', | 'Page Load Timeout': '1800,000', | 'Implicit Wait Timeout': '1800,000' | } |} |} |"; ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "'", """"); Р = SeleniumPOST("session", ТекстЗапроса); Сообщить("Ответ: " + Р.КодСостояния + " Текст:" + Р.Текст); Если Не Р.ОК Тогда СтопОшибка("При создании сессии Selenium. Код состояния: " + Р.КодСостояния + "Текст: " + Р.Текст); Возврат; КонецЕсли; sessionId = Р.json["value"]["sessionId"]; Session = Новый Структура(); Session.Вставить("sessionId", sessionId); Session.Вставить("sessionURL", "session/" + sessionId + "/"); SeleniumOpenSite(Session, АдресВходаВБанк); InputID = SeleniumGetElementByID(Session, "inputLogin").id; Р = SeleniumSendKeys(Session, InputID, "L1224354" + Символы.ПС); InputID = SeleniumGetElementByID(Session, "inputPassword").id; Р = SeleniumSendKeys(Session, InputID, "18282822828" + Символы.ПС); КонецПроцедуры
Как видите, все POST-запросы убраны в функции, работа ведется, как будто бы через скрипт. Скорость тут не особо важна, потому что эмулируются действия человека.
Открывается новое окно (сессия) Chrome, срабатывае эмуляция ввода клавишами логина и пароля, авторизация проходит и браузер переходит на страницу запроса СМС:
По-моему это свежий глоток для всех желающих программно управлять браузерами из 1С!
Одно цэ во всей красе. Вместо использования объектной модели селениума — собираем текст руками. Промахнулись с запятой — долго думаем что не так. Ничего не понятно что куда, какое-то месиво, потом что-то убрать добавить в логику — все сломается
Вы протип Webdrive API сейчас выступаете или как? Не совсем понял?
Понятно, что через библиотеку Webdrive работать проще, чем кидать POST-запросы, но что поделать, если эта библиотека не интегрируется в 1с.