Имя: Пароль:
1C
1С v8
Работа с сайтом в 1с (DOM)
0 VitaliyTokarev
 
22.01.21
09:51
Пытаюсь парсить сайт через "Поле HTML документа".
Дошёл до пути типа:

ЭтаФорма.Элементы.Страничка.Документ.children.0.children.1.children.2.children.1.children.1.children.2.children.1.children.1.children.0

Параллельно создаю структуру:
СтруктураСтраницы.document.HTML.BODY.MAIN.DIV[1].DIV.DIV[2].DIV[1].DIV[1].FORM

На этой форме нужно заполнить логин пароль и нажать кнопку "Войти". Как это сделать програмно не останавливая парсинг и не делая это руками на форме? Вопрос не про загрузку данных с GET и POST.

<form id="login-form" action="/user/login" method="post">
<input type="hidden" name="_frontendCSRF" value="xUH58yo1NEeBo831...">            <div class="form-group field-loginform-login required">
<label class="control-label" for="loginform-login"><span class="glyphicon glyphicon-user"></span> Логин</label>
<input type="text" id="loginform-login" class="input-lg form-control" name="LoginForm[login]" maxlength="50" placeholder="Обычно совпадает с номером договора" autofocus="autofocus" onfocusout="clearLogin($(this), &quot;/user/filter-login&quot;)" tabindex="100" aria-required="true">

<p class="help-block help-block-error"></p>
</div>            
                        <div class="form-group field-loginform-password required">
<label class="control-label" for="loginform-password"><span class="glyphicon glyphicon-lock"></span> Пароль</label><span class="pull-right"><a class="small" href="/user/forgot-password" maxlength="50" tabindex="104">Забыли пароль?</a></span><input type="password" id="loginform-password" class="input-lg form-control" name="LoginForm[password]" maxlength="50" placeholder="Ваш пароль" tabindex="102" aria-required="true"><p class="help-block help-block-error"></p>
</div>            
            <div class="form-group field-loginform-rememberme">
<div class="checkbox">
<label for="loginform-rememberme">
<input type="hidden" name="LoginForm[rememberMe]" value="0"><input type="checkbox" id="loginform-rememberme" name="LoginForm[rememberMe]" value="1" checked="" tabindex="103">
Запомнить меня
</label>
<p class="help-block help-block-error"></p>

</div>
</div>            <button type="submit" class="btn btn-lg btn-block btn-primary" name="login-button" tabindex="105">Войти</button>            </form>
1 Юрий Лазаренко
 
22.01.21
10:30
(0) Если ты уже работаешь с полем html-документа, то ты уже на клиенте, а значит, у тебя есть javascript. Заполни логин и пароль яваскриптом и кликни кнопку. Примеров в интернете полно, вот один: http://catalog.mista.ru/public/338126/
2 VitaliyTokarev
 
22.01.21
10:33
(1) О, спасибо, в сторону JavaScript не смотрел
3 Юрий Лазаренко
 
22.01.21
10:34
Если кратко, то делаешь:
document.getElementById("loginform-login").value = <Твой логин>
document.getElementByClassName("login-button")[0].click()
4 Юрий Лазаренко
 
22.01.21
10:35
Точнее
document.getElementById("loginform-login").value = <Твой логин>
document.getElementById("loginform-password").value = <Твой пароль>
document.getElementByClassName("login-button")[0].click()
5 VitaliyTokarev
 
22.01.21
10:36
(4) Огромное спасибо!
Дальше уже разберусь.
6 Юрий Лазаренко
 
22.01.21
10:37
(5) Не во что
7 VitaliyTokarev
 
22.01.21
11:02
(6) Ахаха, а не тут-то было))))

getElementById - Это он прожевал, а getElementByClassName - нет...

{Обработка.имПарсинг.Форма.Форма.Форма(111)}: Метод объекта не обнаружен (getElementByClassName)
        Кнопка = ДокументДляПарсинга.getElementByClassName("login-button");
8 VitaliyTokarev
 
22.01.21
11:08
Если что, платформа последняя (8.3.18 с чем-то), а вот УТ 10.3 в режиме совместимости 8.2.13
9 acht
 
22.01.21
11:14
(7) Потому что оно getElementsByClassName ахаха
10 VitaliyTokarev
 
22.01.21
11:27
(9) А, ок)))

А я уже вот так сделал ещё:

        Логин = ДокументДляПарсинга.getElementById("loginform-login");
        Пароль = ДокументДляПарсинга.getElementById("loginform-password");

        ЛогинФорм = ДокументДляПарсинга.getElementById("login-form");
        Кнопка = ЛогинФорм[5];

        Логин.value = "блаблабла";
        Пароль.value = "блаблабла";
        Кнопка.click();
11 Юрий Лазаренко
 
22.01.21
12:49
(10) Но только смотри, если в форму добавят/удалят элементы, то Кнопка = ЛогинФорм[5]; вернет другой элемент.
В (4) я неправильно написал, должно быть
document.getElementsByName('login-button')[0]
12 VitaliyTokarev
 
27.01.21
09:29
Ещё вопрос возник.
Человек нажал на что-то. В 1С у документа возникло событие "ПриНажатии".
А как понять на какой объект на страничке он нажал?
13 Малыш Джон
 
27.01.21
09:40
(12) ТекущийЭлемент у Формы
14 VitaliyTokarev
 
27.01.21
09:45
(13) Текщим элементом является сама строка, которая и есть "Поле HTML документа". А мне нужно что именно в этом самом документе нажали
15 VitaliyTokarev
 
27.01.21
12:02
Нет специалистов? ))))))))
16 MyNick
 
27.01.21
12:04
(0) жмем в браузере F12, вкладка network. Вбиваем лохин, пасворд, жмем куда надо. Смотрим заголовок и тело post запроса.
Делаем то же самое на 1С.
Накуа тебе парсинг...?
17 VitaliyTokarev
 
27.01.21
12:26
(16) С пассвордом разобрался. Вопрос другой. Человек работает как в браузере и кое-что смотрит напрямую на форме 1С, как отследить куда нажал?
18 PloAl
 
27.01.21
12:52
(12) Во втором параметре события ПриНажатии - ДанныеСобытия.Element
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс