Ура! Сбылась моя мечта о программном управлении браузером 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С!

fixin

Программирую на 1С с 1999 года. В 1С просто Гений. В 2020 году ушел из офиса на вольные хлеба фриланса. Принимаю заказы.

Читайте также:

комментария 2

  1. Прис:

    Одно цэ во всей красе. Вместо использования объектной модели селениума — собираем текст руками. Промахнулись с запятой — долго думаем что не так. Ничего не понятно что куда, какое-то месиво, потом что-то убрать добавить в логику — все сломается

    • Вы протип Webdrive API сейчас выступаете или как? Не совсем понял?
      Понятно, что через библиотеку Webdrive работать проще, чем кидать POST-запросы, но что поделать, если эта библиотека не интегрируется в 1с.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *