|
Работа с сайтом в 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), "/user/filter-login")" 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
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |